• 文件首行为空白行,为什么该行字符串长度为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记事本。

  • 相关阅读:
    2020软件工程作业02
    第一次作业
    伪造IP
    Windows 上安装metasploit
    Kali安装 Typora
    在linux系统中安装调用汉语打字软件
    2020 年 10 月 10 日跑步随想
    最长公共前缀
    N皇后
    一道有趣的异步题
  • 原文地址:https://www.cnblogs.com/xxyfhjl/p/5588171.html
Copyright © 2020-2023  润新知