excel打開UTF-8編碼的CSV文件,添加BOM頭后不再亂碼

utf-8保存的csv格式文件要讓Excel正常打開的話,需要在文件最前面加入BOM(Byte order mark)。如果接收者收到以EF BB BF開頭的字節流,就知道這是UTF-8編碼了。

所以在write文件的內容數據之前,先write一下BOM。如下面代碼

FileOutputStream fos = new FileOutputStream(new File(this.csvFileAbsolutePath));?

? ? ? ? byte [] bs = { (byte)0xEF, (byte)0xBB, (byte)0xBF};? //UTF-8編碼

? ? ? ? fos.write(bs);?

? ? ? ??fos.write(...);

? ? ? ? fos.close();?

這樣添加了BOM的CSV文件用excel直接打開,是不會出現亂碼的。

我當時遇到的問題是這樣的。下載CSV文件,用excel打開,中文亂碼,用atom,notepad++和 記事本打開,顯示正常。 查資料發現是excel不能識別無BOM頭的unicode文件問題,就是excel在打開CSV文件時默認用ASNI打開。? 所以需要添加BOM頭。


Gallen 轉載

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容