Python Solve UnicodeEncodeError 'gbk' / 'ascii' / 'utf8' codec can't encode character '\x??' in position ? 解決有關Python編碼的錯誤


 

在Python中,處理中文字符一直是很令人頭痛的問題,一言不合就亂碼,而且引起亂碼的原因也不盡相同,有時候是python本身默認的編碼器設置的不對,有時候是使用的IDE的解碼器不對,還有的時候是終端terminal的解碼器不對,有時候同一份代碼在Python2上正常運行,Python3上就不行了,反正產生亂碼的原因很多,這里就列舉一些博主遇到過的一些錯誤及其解決方案:

 

Error 1:

UnicodeEncodeError: 'gbk' codec can't encode character '\x??' in position ?: illegal multibyte sequence

這個是在Win7上用Python3編譯的時候遇到的,原因是win7的python3的默認編碼不是utf8,我們只需要將默認編碼改為utf8就能解決這個問題,參見下面的代碼:

 

import sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') # Change default encoding to utf8  

 

Error 2:

UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position: ordinal not in range(128)

這個是Mac上使用Python2編譯的時候遇到的,原因是也是由於python2的默認編碼不是utf8,我們只需要將默認編碼改為utf8就能解決這個問題,參見下面的代碼:

 

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

 

像其他的產生錯誤的原因,比如IDE顯示亂碼,或者終端Terminal顯示亂碼,可以通過Google搜索快速的找出解決方法,這里就不贅述了。

 

參考資料:

http://ajucs.com/2015/11/10/Python-character-encoding-explained.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM