[python] 解決生成csv file編碼問題(with BOM) - JysBlog
文章推薦指數: 80 %
當我們使用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»
延伸文章資訊
- 1utf-8編碼寫出csv檔案Excel開啟亂碼問題解決_U繡花同志
其實是UTF-8檔案的Unicode簽名BOM(Byte Order Mark) ... 在UCS 編碼中有一個叫做"ZERO WIDTH NO-BREAK SPACE"的字元,它的編碼是FEFF。
- 2開啟任務CSV檔時出現亂碼| TP辦公通-知識庫
「傳送者」須先將CSV檔儲存為具有BOM的UTF-8(若無此選項,請選UTF-8)編碼格式。 解決方式: 以微軟Excel開啟,並另存格式為CSV UTF-8 (逗點分隔)(*.csv) 格式:...
- 3NOTES-產生具有BOM的UTF8編碼檔案 - 黑暗執行緒
File.WriteAllText與StreamWriter在沒有指定Encoding.UTF8時,會產出UTF-8編碼但沒有BOM的檔案; 以下的範例中,只有F2.csv、F4.csv可以正確...
- 4Excel 解決UTF-8 編碼CSV 檔案出現亂碼問題教學 - Office 指南
以中文的資料來說,除了傳統的Big5 之外,UTF-8 編碼是目前最常見的CSV 檔案編碼方式,如果要讓Excel 正常顯示UTF-8 的資料,必須在匯入資料時指定正確的編碼,以下是操作 ...
- 5JAVA輸出帶BOM的UTF-8編碼的檔案 - 程式人生
微軟在UTF-8 中使用BOM 是因為這樣可以把UTF-8 和ASCII 等編碼明確區分開。 否則用Excel開啟CSV檔案有可能是亂碼的示例程式碼如下: response.