出現'cp950' codec can't decode byte 0xba in position 4: illegal multibyte sequence 錯誤
請問出現這一行結果是代表什麼意思,該如何解決?
UnicodeDecodeError: 'cp950' codec can't decode byte 0xba in position 4: illegal multibyte sequence
下面是代碼
fh = open("./data/example.csv")
f = fh.read() <-------------------------這行報錯
fh.close()
print(f)
回答列表
-
2019/11/19 上午 10:06倪瑋晟贊同數:3不贊同數:0留言數:0
在 open 的地方加上編碼(encoding='utf-8')就可以了
例如:
fh = open("./data/example.csv",encoding='utf-8')
f = fh.read()
fh.close()
-
2019/11/19 下午 09:42張維元 (WeiYuan)贊同數:4不贊同數:0留言數:0
嗨,這個原因是因為 windows 環境的檔案預設會存成「cp950」的編碼,在 Python 中讀檔會失敗。解法可以在用以下的方式指定編碼:
```
open("./data/example.csv", encoding='utf-8')
```
另外一種常見的問題是,可能不知道原始檔案的編碼方式為何,可以透過 chardet 工具來查詢:
```
import chardet with open('filename.txt','rb') as f:
result = chardet.detect(f.read())
```
最後科普一下幾種常見的編碼格式:
* Unicode/UTF8:萬國碼,可支援多種語言的編碼格式
* ISO-8859-1/latin1:主要用於歐系國家的文字
* Big5:繁體中文
* GBK:簡體中文
* cp950:windows 預設的編碼,但程式不支援
-
2019/11/20 上午 02:46Jeffrey贊同數:1不贊同數:1留言數:0
將f = open("./data/example.csv", "r")改成f = open("./data/example.csv", "r",encoding="utf-8")試試