zoukankan      html  css  js  c++  java
  • 文件首行为空白行,为什么该行字符串长度为1(line.length()=1)

    问题描述:最近编写程序遇到一个问题,文件首行的内容为空,但调用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记事本。

  • 相关阅读:
    BZOJ5473: 仙人掌
    BZOJ5289: [Hnoi2018]排列
    BZOJ5322: [JXOI2018]排序问题
    BZOJ5323:[JXOI2018]游戏
    webstorm引用ESLint进行静态代码检查
    React基础知识
    静态资源优化方案
    Nodejs 饭店
    linux du和df
    Docker知识-1
  • 原文地址:https://www.cnblogs.com/xxyfhjl/p/5588171.html
Copyright © 2011-2022 走看看