Python 輸出中文亂碼問題 - Medium
文章推薦指數: 80 %
反而開檔時,不指定 encoding='utf8' 的話卻可以正常開啟,為何? 原因. Python3 寫檔時其實蠻聰明的,如果不指定encode 的話,會參考系統語系。
當指定utf ...
GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWritePython輸出中文亂碼問題Python是一個便於快速開發的程式語言,因為一些歷史因素,目前主流分成2.x,3.x兩大版本。
本文是以Python3為主,說明為何輸出文字檔會被視為亂碼,以及解決方法。
情境使用預設方法寫檔,包含中文字,在Windows環境下用Excel開啟後,變成亂碼。
withopen('file.csv','w',encoding='utf8')asff:ff.write('中文字1')開啟之後反而變成亂碼反而開檔時,不指定encoding='utf8'的話卻可以正常開啟,為何?原因Python3寫檔時其實蠻聰明的,如果不指定encode的話,會參考系統語系。
當指定utf-8時,就會改用這種編碼寫入文字。
但是Excel就比較硬,通常都是預設自己語系,除非文件有標頭檔。
可以用Notepad++來開啟,看編碼就可以發現一件事:Notepad++開啟是正常的,而且編碼是utf-8我們輸出的檔案雖然確實是utf-8格式,但是卻沒有標頭檔。
解決方法Notepad++如果只是一次性的,其實上面的圖片已經告訴你如何處理了。
Notepad++有提供轉換功能,我們只需要按下轉換至UTF-8碼格式並存檔,便可以解決。
自己加標頭檔如果程式輸出很多檔案,或是經常重新輸出,我們當然是不希望都要重覆上面的動作。
這時候可以選擇自己加上標頭檔,也就是在輸出文件的第一行加上ff.write('\ufeff')withopen('file.csv','w',encoding='utf8')asff:ff.write('\ufeff')ff.write('中文字1')如此一來,excel就知道這個檔案是utf-8格式,便能以正確的編碼開啟。
改用UTF-16格式這是一個更簡單而且更泛用的做法,自己加標頭檔還需要記得那些特殊字元,又或是要import相關的package,但是改用utf-16就更簡單了。
withopen('file.csv','w',encoding='utf16')asff:ff.write('中文字1')以上是今天替同事解決亂碼問題,順便做個記錄。
不管用哪個方法,都能解決亂碼。
不過utf-16為何可以無須手動加標頭檔,本篇就先不解釋了參考資料:stakeoverflowUTF-16Morefrom黃凱鴻FollowLovepodcastsoraudiobooks?Learnonthegowithournewapp.TryKnowableAboutHelpTermsPrivacyGettheMediumappGetstarted黃凱鴻3FollowersFollowHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable
延伸文章資訊
- 1python中文编码与乱码问题解决 - 天祺围棋
由于string_list 里面都是utf-8编码的元素,因此在匹配的时候需要解码成unicode 才能和已经解码的token 匹配。 3. 结合jieba 分词来把一个字符串分词并去除标点符号...
- 2python如何解決中文亂碼問題 - 人人焦點
強制轉換爲gbk編碼,上一步已經從utf-8轉換爲unicode了,從unicode是編碼的過程,通過encode實現。 # encoding:utf-8 s = "中文" u = s.deco...
- 3python如何解决中文乱码问题
文件存储设为utf-8格式,编码声明为utf-8。||出现汉字的地方前面加u。||不同编码之间不能直接转换,要经过unicode中间跳转。||cmd下不支持utf-8编码。
- 4Python 多种中文乱码问题原因及解决方法(decode()、encode()
- 5徹底搞懂python 中文亂碼問題(深入分析) - 程式人生
強制轉換為gbk編碼,上一步已經從utf-8轉換為unicode了,從unicode是編碼的過程,通過encode實現。 view source. print? 1, # encoding:ut...