將二維數組保存在本地csv文件中時,打開發現中文亂碼。記錄下解決方法。
hList
是我的一個二維數組,利用pandas可以將其保存在本地csv文件中
import pandas as pd
data = pd.DataFrame(hList)
data.to_csv('data.csv')
但是打開時發現中文全部保變成了亂碼,應該是編碼問題了。
解決的過程中嘗試了在.to_csv
時加 encoding="utf_8"
或者gbk
,還是亂碼。
查資料發現必須要這個樣子才能正確保存:
import pandas as pd
data = pd.DataFrame(hList)
data.to_csv('data.csv',encoding="utf_8_sig")
關於"utf_8_sig"
與"utf-8"
的區別:
python中會有一個BOM("ByteOrder Mark")
用來聲明該文件的編碼信息,以\ufeff
的形式放在文件首行,但python會把它當作文本解析。
"utf-8"
是以字節爲編碼單元,它的字節順序在所有系統中都是一樣的,沒有字節序問題,因此它不需要BOM,所以當用"utf-8"編碼方式讀取帶有BOM的文件時,它會把BOM當做是文件內容來處理, 就會發生錯誤。
"uft-8-sig"
中sig全拼爲 signature 也就是"帶有簽名的utf-8", 因此"utf-8-sig"讀取帶有BOM的"utf-8文件時"會把BOM單獨處理,與文本內容隔離開。
(或許與這個原因有關吧)
就這樣愉快地結束吧
撒花✿✿ヽ(°▽°)ノ✿