读取文件的时候,编码头bom影响字符串equals的问题
2017-08-18 本文已影响0人
科学工作者
windows系统
java语言
读取cvs表格文件时,获取第一个字符用来比较
cvsStr = "主题"
javaStr = "主题"
出现 cvsStr.equals(javaStr.trim()) 的结果为 false
调试时发现,两个字符串都是主题,且在光标移动时,发现光标下的长度都为2。
这个时候,抹一抹你的眼睛,发现,再仔细看光标,发现,长度依旧都是2.
在Eclipse的断点调试变量区(Variables)里面,发现,他们的长度真特么是不同的。 cvsStr的length为3!!!
这个时候,你可以这样 System.out.pring( (int)cvsStr.charAt(0)) 输出第一个位置的ASCII码。
发现ASCII码为 65279 ,我靠,原来还有字符串即不输出空格,也不显示的。这个就是微软对UTF-8文件做了bom标记的问题。