錯誤
response = requests.get(url, timeout=5) # 請求一個網頁
with open(‘response.txt’, ‘w’) as file: # 打開一個文件
file.write(response.text) # 向文件寫入response
提示錯:
UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xe5’ in position 520: illegal multibyte sequence
原因
這個是因為文件打開使用的編碼方式是gbk,是open默認的,在response.text里有gbkencode不了的編碼。導致錯誤。如果換成utf-8,倒是可以輸出到文件:
with open(‘response.txt’, ‘w’, encoding=‘utf-8’) as file:
修改這一句,可以繞過這個錯誤,但是,打開網頁出現亂碼。
本地的默認設置是gbk。
>>> import locale
>>> print(locale.getdefaultlocale())
('zh_CN', 'cp936')
Doc/library/codecs.rst
| gbk | 936, cp936, ms936 | Unified Chinese |
從網上搜了一下,response自帶編碼方式,可以查閱。
>>> print(response.encoding)
ISO-8859-1
最后改成ISO-8859-1就好了。