讀取文件的時(shí)候,編碼頭bom影響字符串equals的問題

windows系統(tǒng)

java語言

讀取cvs表格文件時(shí),獲取第一個(gè)字符用來比較

cvsStr = "主題"

javaStr = "主題"

出現(xiàn)? cvsStr.equals(javaStr.trim()) ?的結(jié)果為 false

調(diào)試時(shí)發(fā)現(xiàn),兩個(gè)字符串都是主題,且在光標(biāo)移動時(shí),發(fā)現(xiàn)光標(biāo)下的長度都為2。

這個(gè)時(shí)候,抹一抹你的眼睛,發(fā)現(xiàn),再仔細(xì)看光標(biāo),發(fā)現(xiàn),長度依舊都是2.

在Eclipse的斷點(diǎn)調(diào)試變量區(qū)(Variables)里面,發(fā)現(xiàn),他們的長度真特么是不同的。 cvsStr的length為3!!!

這個(gè)時(shí)候,你可以這樣? System.out.pring(? (int)cvsStr.charAt(0))? 輸出第一個(gè)位置的ASCII碼。

發(fā)現(xiàn)ASCII為 65279 ?,我靠,原來還有字符串即不輸出空格,也不顯示的。這個(gè)就是微軟對UTF-8文件做了bom標(biāo)記的問題。

解決方案

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容