python解決csv文件用excel打開亂碼問題

【問題】

python輸出的csv文件用excel打開,里面的中文會(huì)變成亂碼,但用window下的記事本或mac下的numbers打開就正常顯示。

原因是python輸出的文件是utf-8編碼寫入的,excel默認(rèn)以gbk方式讀取,導(dǎo)致亂碼發(fā)生。


【解決方法1】文件產(chǎn)出時(shí)encoding設(shè)置為utf-8-sig????

用excel打開csv時(shí),excel會(huì)先檢查文件的第一個(gè)字符,來了解這個(gè)文件是什么編碼方式,如果這個(gè)字符是BOM,excel就知道用utf-8的方式打開這個(gè)文件。python自帶了處理BOM的編碼方式uft-8-sig,因此只需要在文件產(chǎn)出時(shí)將encoding設(shè)置為utf-8-sig。

如果文件不是由python產(chǎn)出的,只需要以u(píng)tf-8方式讀入再以u(píng)tf-8-sig方式存儲(chǔ)即可


【解決方法2】懶人法,適用只含簡體中文的文件

用記事本打開,點(diǎn)擊另存為,右下角編碼方式選擇“ANSI”,這個(gè)過程是把這個(gè)文件改成gbk編碼格式,excel就是默認(rèn)用gbk方式打開的。


參考:Python寫的csv文件,如何讓 Excel 雙擊打開不亂碼? - 云+社區(qū) - 騰訊云



對(duì)編碼格式一竅不通的可以閱讀以下網(wǎng)頁

python筆記——二進(jìn)制和文件編碼_砍柴姑娘Jourosy的博客-CSDN博客

編碼方式之ASCII、ANSI、Unicode概述 - 藍(lán)海人 - 博客園

【簡單總結(jié)】:

1. 首先需要了解 字符集 和 字符編碼 兩個(gè)概念,字符集定義了字符和二進(jìn)制的一一對(duì)應(yīng)關(guān)系,字符編碼規(guī)定了如何將字符的編號(hào)存儲(chǔ)到計(jì)算機(jī)中。

2. Unicode是字符集,包含了全球文字的唯一編碼,utf-8是編碼方式,將unicode以某種方式存儲(chǔ)到計(jì)算機(jī)中。


3. 有些字符集和編碼是結(jié)合在一起的,稱作字符集還是編碼都無所謂,比如ASCII,GBK

4. ANSI是各個(gè)國家地區(qū)不同擴(kuò)展編碼方式的總稱,互不兼容(可以看出來通用性沒有utf好)

5. 不同編碼方式在轉(zhuǎn)換時(shí),通常需要以u(píng)nicode作為中間編碼,即先將其他編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容