读取文件的时候,编码头bom影响字符串equals的问题

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标记的问题。

解决方案

你可能感兴趣的:(读取文件的时候,编码头bom影响字符串equals的问题)