pycharm圖解:UnicodeEncodeError: 'gbk' codec can't encode character

python運行報錯
UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’ in position 111523: illegal multibyte sequence

指定encoding=utf-8或者gbk,乃至網頁編碼
在這裏插入圖片描述
以及將r.encoding = r.apparent_encoding,都沒有效果,只有將內容寫入txt文本時纔沒有報錯。但是在需要在控制檯查閱時就會非常不方便。
於是學習了一下編碼知識。
參考以下三篇文章後找到了解決方法:
博主愛撒謊的男孩的《python中decode和encode的區別》“字符串在Python內部的表示是unicode編碼,因此,在做編碼轉換時,通常需要以unicode作爲中間編碼,即先將其他編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。”

博主極客之道《UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’ in position … 問題解決辦法之一》網絡數據流寫入文件時的三個編碼,python文件的編碼、網頁編碼、寫入文件編碼

博主CN-LILU《‘gbk’ codec can’t encode character ‘\xa0’ in position 12248: illegal multibyte sequence》print()函數自身有限制,不能完全打印所有的unicode字符

首先檢測是否print()函數限制問題,不過基本不可能。print(‘results’ == ‘\u0061’)的驗證結果爲false。
其次,網頁寫入的編碼方式也是正確的,因爲print(r.encoding)的編碼爲utf-8.
最後,受到前兩個博主的文章啓發想到是否是console呈現的編碼不正確,即console的編碼爲gbk,gbk無法解碼\xa0。因爲在python中需要Unicode的中轉,網頁數據流寫入python需要decode,python寫入其他文件需要encode,因而console呈現的可能也是需要python進行encode的內容,這裏的問題就在於console的encode出現問題。在pycharm中發現確實如此,因爲之前爲了在ternimal中呈現中文而不是亂碼,所以將命令行的編碼均設置爲gbk。現在gbk無法將position 111523的’\xa0’ 呈現,需要將gbk換成utf-8.這個設置在pycharm的設置中,設置的編輯器的文本編碼中。

具體解決方法如下圖
第一步:點擊文件打開編輯器
在這裏插入圖片描述

第二步:打開編輯器的文本編碼進行修改
在這裏插入圖片描述
第三步:將Global Encoding改回utf-8(需要ternimal不亂碼需要改回)
在這裏插入圖片描述
在這裏插入圖片描述

改變了編碼方式後沒有了報錯:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章