出現UnicodeDecodeError: 'utf-8' codec can't decode byte 0x85 in position 59: invalid start byte錯誤
我在輸入時得到這個code。不太知道哪裡錯誤。
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x85 in position 59: invalid start byte
回答列表
-
2019/09/04 下午 04:26高培原贊同數:0不贊同數:0留言數:0
建議路徑不要有中文
-
2019/09/04 下午 06:03蔡清煌贊同數:0不贊同數:0留言數:0
-
2019/09/04 下午 09:51張維元 (WeiYuan)贊同數:1不贊同數:0留言數:0
嗨,這個部分是讀檔的時候預設的編碼方式跟實際內容不同導致的錯誤。有可能是作業系統環境的差異導致。不管你是用 Python 原生的 open/read 或是 Pandas 提供的 read_csv 方法,都可以再開檔的時候指定 encoding 參數。
假設要使用 utf-8 編碼方式存取檔案,使用方法如下:
```
encoding = 'utf-8'
# 法一
f =open('filename.txt','r', encoding=encoding)
text = f.read()
f.close()
# 法二
df = pd.read_csv('filename.csv',encoding=encoding)
```
另外一種常見的問題是,可能不知道原始檔案的編碼方式為何,可以透過 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 預設的編碼