如何解決Python編碼錯誤”一文
你又沒有遇到過,在寫程式碼最後執行的時候,出現執行不了,在解析其他檔案的時候出現報錯,那麼你是如何解決的呢?今天小編為大家帶來一個技術性問題是怎麼解決的過程。用python解析檔案(檔案中含有中文),並寫入其他檔案時報錯:
UnicodeEncodeError:'ascii'codeccan'tencodecharacters
經過google大神的指導,確定以下解決方式:
#coding:utf-8importsysreload(sys)sys.setdefaultencoding('utf-8')
疑問:為什麼需要reload呢?
grep-r-i'setdefaultencoding'/usr/lib/python2.7輸出結果為:
/usr/lib/python2.7/site.py:sys.setdefaultencoding(encoding)#NeedsPythonUnicodebuild!
/usr/lib/python2.7/site.py:#Removesys.setdefaultencoding()sothatuserscannotchangethe
/usr/lib/python2.7/site.py:ifhasattr(sys,"setdefaultencoding"):
/usr/lib/python2.7/site.py:delsys.setdefaultencoding
Binaryfile/usr/lib/python2.7/site.pycmatches
把delsys.setdefaultencoding防止使用者在改變defaultencoding,這個原因暫時真不知。。
對於windows平臺,上面的辦法真不行,對於python2.x中,總是存在這個問題,在Python3.x的時候這真不是個事,
對於windows平臺,
檔案開頭宣告為#coding=utf-8,
寫入字串時,轉換編碼為GBK
file.write(str.encode('gbk'))
還要注意的是:open(....)不能有任何運算,一次只能寫入一行,所以要用 來連成一行
#coding=utf-8
當這些問題都解決以後,你就會發現,你已經在塊成為一個高手了。