UTF-8的CSV文件中文亂碼問題解決辦法

  最近工做中須要將一些數據寫入CSV文件中,並要使用Excel打開進行查看。測試時發現,導出的CSV文件用Excel打開後,中文字符所有是亂碼。寫入CSV文件的是UTF-8編碼的數據,文件在Linux中查看是沒有問題的,在Windows上用Excel打開卻有亂碼。在查閱資料後發現,windows系統中文本文檔的編碼格式用BOM來指定,在文件的開頭要寫入字符:EF BB BF(UTF-8的BOM編碼),這樣UTF-8編碼的文件才能被正確識別。因而修改代碼,相似下邊這樣:html

FileOutputStream fos = new FileOutputStream(new File(this.csvFileAbsolutePath)); byte [] bs = { (byte)0xEF, (byte)0xBB, (byte)0xBF}; fos.write(bs);
//寫入數據 fos.close()

  在CSV文件最前端寫入BOM後,用Excel打開時就不會再有亂碼了。前端

 

關於BOMwindows

  BOM(byte-order mark),即字節順序標記,用於標記字節序的,也就是大小端。UTF- 8以字節爲編碼單元,沒有字節序的問題,所以UTF-8不須要BOM來代表字節順序,但能夠用BOM來代表編碼方式,在Windows系統中就是使用BOM來標記文本文件的編碼方式的。UTF- 8的BOM編碼是EF BB BF,Excel發現文件開頭的EF BB BF就知道文件編碼方式是UTF- 8,所以就能正常顯示中文。測試

 

參考連接:this

  https://blog.csdn.net/zhaozhi406/article/details/46241415編碼

  https://blog.csdn.net/u014563989/article/details/53087470spa

  http://www.fmddlmyy.cn/text6.html.net

  https://blog.csdn.net/yutianxu1986/article/details/82595290code

  https://blog.csdn.net/qq_35623773/article/details/87868608htm

相關文章
相關標籤/搜索