今天在做项目时遇到一个很简单又好纠结的问题:
test.dat文件内容:
10000111122222222212345678901234567890000209991234567890123N 344000000000000
10000100014012345678901234567891234567890123051301 1234567890abcde
1001000011234567890123
用java读.dat文件时出现以下情况:
在Eclipse控制台中看到以下输出:
刚开始还以为是每个数字之间有空格,就用str.replaceAll("\\s*","");来消除所有空格,没想到是怎么搞都去除不了空格。搞了几个小时之后打开log日志文件查看,发现以下情况:
在log日志文件看到以下情况
从中看到似乎一个字符都包含两个字节在里面,从一个论坛中看到可能与Unicode编码有关,于是朝着这个思路去寻找解决方案。
用EditPlus编辑工具打开test.dat文件,查看该文件编码发现是“Unicode”编码,把它改回“UTF-8”编码,再读文件看看,果然正常了
Unicode编码中每一个字符都有两个字节的。