最近工作中需要將一些數(shù)據(jù)寫入CSV文件中,并要使用Excel打開進(jìn)行查看。測試時(shí)發(fā)現(xiàn),導(dǎo)出的CSV文件用Excel打開后,中文字符全部是亂碼。寫入CSV文件的是UTF-8編碼的數(shù)據(jù),文件在Linux中查看是沒有問題的,在Windows上用Excel打開卻有亂碼。在查閱資料后發(fā)現(xiàn),windows系統(tǒng)中文本文檔的編碼格式用BOM來指定,在文件的開頭要寫入字符:EF BB BF(UTF-8的BOM編碼),這樣UTF-8編碼的文件才能被正確識(shí)別。于是修改代碼,類似下邊這樣:
在CSV文件最前端寫入BOM后,用Excel打開時(shí)就不會(huì)再有亂碼了。
關(guān)于BOM
BOM(byte-order mark),即字節(jié)順序標(biāo)記,用于標(biāo)記字節(jié)序的,也就是大小端。UTF- 8以字節(jié)為編碼單元,沒有字節(jié)序的問題,因此UTF-8不需要BOM來表明字節(jié)順序,但可以用BOM來表明編碼方式,在Windows系統(tǒng)中就是使用BOM來標(biāo)記文本文件的編碼方式的。UTF- 8的BOM編碼是EF BB BF,Excel發(fā)現(xiàn)文件開頭的EF BB BF就知道文件編碼方式是UTF- 8,因此就能正常顯示中文。
參考鏈接:
https://blog.csdn.net/zhaozhi406/article/details/46241415
https://blog.csdn.net/u014563989/article/details/53087470
http://www.fmddlmyy.cn/text6.html
https://blog.csdn.net/yutianxu1986/article/details/82595290
https://blog.csdn.net/qq_35623773/article/details/87868608
聯(lián)系客服