您的位置:首页 > 其它

文件首行为空白行,为什么该行字符串长度为1(line.length()=1)

2016-06-15 17:06 281 查看
问题描述:最近编写程序遇到一个问题,文件首行的内容为空,但调用line0.length()返回的确为1 。如下图:



最初认为可能存在制表符,或者换行符的原因,于是调用了line0.trim();方法,but然并卵。如下图:



最后调用line0.getBytes();发现确实存在数据。如下图:



并且发现文件格式为utf8 BOM,如下图:



试验了gb2312,utf8,ASCII格式的文件,line0.length()均返回0,唯独utf8 BOM格式的文件line0.length()返回1,称之为BOM头"[-17 , -69 , - 65]".

结论:读取utf-8 BOM格式的文件首行字符串长度为首行内容字符串长度+1。

   BOM头.length() = 1;

line0.length() = BOM头.length() + line0.length();

ps: 亲测utf8格式的文件经过windows记事本打开保存后,自动转换成utf8 BOM格式的文件.

挨踢狗个人观点:平常编辑文本时,尽量不要用windows记事本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: