這幾天自己寫了個工具,處理代碼。測試時發現,有的文件處理錯誤。
直接打開文件,也沒問題。嗯?吾用UltraEdit打開,轉移到16進制格式,看到形狀有三個字節:EF FF BF(應該是)。使用FileReader讀取,得到的是FEFF,而且說編碼是GBK。
這個編碼咱玩得多的了,很熟悉。可是奇怪的事情發生了,吾寫入文件時就籌碼。於是反複分析,最後懷疑還是編碼集錯了。於是:
吾將編碼改爲UTF8,再寫入文件就對了。
寫怎麼辦?吾乾脆跳過這幾個字符。
考慮到其他文件可能是GBK,於是吾先用GBK讀取,然後看第一個字節是不是0xFEFF。
如果是,轉UTF8再次讀取。
如果不是,直接處理。
結果所有代碼都處理正確。