[python] 解決生成csv file編碼問題(with BOM) - JysBlog

文章推薦指數: 80 %
投票人數:10人

當我們使用UTF-8生成csv時,並未在header生成BOM訊息,所以Excel會依照Unicode編碼讀取,就會有亂碼產生。

實作. 下面是簡單的生成csv的python程式:. 首頁 Coding Python [python]解決生成csvfile編碼問題(withBOM) [python]解決生成csvfile編碼問題(withBOM) 0 Jys發佈於2年前 本文介紹如何解決生成內容是中文的csvfile後,用excel開啟會有亂碼的問題。

了解編碼 UTF-8 以字節為編碼單元,在UTF-8中,字節順序在所有系統中都是一樣的。

UTF-8-sig sig的意思是signature,即為帶有簽名的UTF-8,又稱UTF-8withBOM(ByteOrderMark)。

BOM(ByteOrderMark) 字面上意思為"字節順序標記",出現在文件的頭部(header),在Unicode編碼標準中用於標示文件是採用何種格式的編碼。

那麼為什麼寫入CSV要用UTF-8-sig呢? Excel在讀取csv時是透過文件header上的BOM來識別編碼,所以若header無帶BOM資訊,那麼會依照預設的Unicode編碼讀取。

當我們使用UTF-8生成csv時,並未在header生成BOM訊息,所以Excel會依照Unicode編碼讀取,就會有亂碼產生。

實作 下面是簡單的生成csv的python程式: importos importcsv CSV_HEAD=["COL01","COL02"] mydata=["123","456"] withopen("mydata.csv",'w',newline='',encoding='utf-8-sig')ascsvfile: writer=csv.writer(csvfile) writer.writerow(CSV_HEAD) writer.writerow(mydata) 123456789 importosimportcsv CSV_HEAD=["COL01","COL02"]mydata=["123","456"]withopen("mydata.csv",'w',newline='',encoding='utf-8-sig')ascsvfile:    writer=csv.writer(csvfile)    writer.writerow(CSV_HEAD)    writer.writerow(mydata) 只要加上encoding=’utf-8-sig’,這樣產生的檔案用excel開啟就不會有亂碼了。

最後修改日期: 2021-03-31 csvencodingexcelpythonpython3utf8 留言 撰寫回覆或留言取消回覆發佈留言必須填寫的電子郵件地址不會公開。

Δ GoogleSearch 近期文章 [python]FlaskCreateRESTfulAPI [Python]pymongoFetchDatabyObjectId [Javascript]新增/刪除JSON中key值 [Web]Getthex-csrf-tokenvalueusingPostman [JAVA]SQLServerConnection 標籤AI ajax AWS bitnami C# coding css data database dll EC2 float html https ini JAVA javascript jQuery js json log mac macOS nodejs pycrypto pyinstaller pyodbc python python3 react reactjs server session sony sublime syntaxhighlight Terminal travel web webpack windows wordpress 人工智慧 宜蘭 自駕 分類 AI人工智慧(3) Arts(2) AWS(5) BluePrism(2) C#(11) Coding(64) Courses–Finland(3) CSS(2) Electron(1) JAVA(6) Javascript(17) Linux(1) Python(25) ReactJS(3) Research(3) SQL(2) TechIntroduce(22) Travel(6) web(14) Windows(4) WPF(1) 咖啡(2) 奇聞軼事(1) 嵌入式(1) 攝影(4) 生活(7) 文章導覽 上一篇文章[Linux]Runprogrambackgroundevenifusersignedoutandoutputlogfiles下一篇文章[TechIntro].NETFramework3.5安裝失敗解決方式 Translate»  



請為這篇文章評分?