[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»
延伸文章資訊
- 1開啟任務CSV檔時出現亂碼| TP辦公通-知識庫
「傳送者」須先將CSV檔儲存為具有BOM的UTF-8(若無此選項,請選UTF-8)編碼格式。 解決方式: 以微軟Excel開啟,並另存格式為CSV UTF-8 (逗點分隔)(*.csv) 格式:...
- 2JAVA輸出帶BOM的UTF-8編碼的檔案 - 程式人生
微軟在UTF-8 中使用BOM 是因為這樣可以把UTF-8 和ASCII 等編碼明確區分開。 否則用Excel開啟CSV檔案有可能是亂碼的示例程式碼如下: response.
- 3web 匯出EXCEL亂碼,因為沒有BOM - iT 邦幫忙
用記事本開| 正常顯示用EXCEL開| 亂碼查看記事本編碼| utf-8. 原因因為沒有BOM, ... 怎麼讓它有BOM,我們可以用stream,stream指定UTF8的話,就會自動加上BOM了.
- 4[Excel教學] 3步驟快速解決打開CSV檔亂碼問題 - impochun blog
原理:既然我下載來的csv檔案編碼(UTF8編碼)excel直接開啟會有問題,那麼我們就來重新做一個Excel看得懂的檔案(加入BOM)。
- 5NOTES-產生具有BOM的UTF8編碼檔案 - 黑暗執行緒
File.WriteAllText與StreamWriter在沒有指定Encoding.UTF8時,會產出UTF-8編碼但沒有BOM的檔案; 以下的範例中,只有F2.csv、F4.csv可以正確...