这几天自己写了个工具,处理代码。测试时发现,有的文件处理错误。
直接打开文件,也没问题。嗯?吾用UltraEdit打开,转移到16进制格式,看到形状有三个字节:EF FF BF(应该是)。使用FileReader读取,得到的是FEFF,而且说编码是GBK。
这个编码咱玩得多的了,很熟悉。可是奇怪的事情发生了,吾写入文件时就筹码。于是反复分析,最后怀疑还是编码集错了。于是:
吾将编码改为UTF8,再写入文件就对了。
写怎么办?吾干脆跳过这几个字符。
考虑到其他文件可能是GBK,于是吾先用GBK读取,然后看第一个字节是不是0xFEFF。
如果是,转UTF8再次读取。
如果不是,直接处理。
结果所有代码都处理正确。