起因
今天在處理工作時,需要將結果從hive讀出,並保存爲csv格式,然後下載。可以下載後用excel打開發現出現亂碼,非我想要的。
解決方案
參考了https://blog.csdn.net/zhuzuwei/article/details/80890007的博文,在此表示感謝。
我們看下pandas官網對參數encoding 的解釋,默認爲utf-8,就是說 在我們不給指定時,就已經默認選擇了utf-8編碼格式。
這裏我使用的是代碼格式爲utf_8_sig
df.to_csv("data.csv",encoding="utf_8_sig")
比較utf-8與utf_8_sig的差異
-
utf-8
utf-8 是以字節爲編碼單元,它的字節順序在所有系統中都是一樣的,沒有字節序問題,因此它不需要BOM,所以當用utf-8編碼方式讀取帶有BOM的文件時,它會把BOM當做是文件內容來處理 -
uft-8-sig
uft-8-sig中sig全拼爲 signature 也就是"帶有簽名的utf-8”,因此"utf-8-sig"讀取帶有BOM的"utf-8文件時"會把BOM單獨處理,與文本內容隔離開
此處待完善和進一步理解。