python UnicodeError

UnicodeError: ASCII decoding error: ordinal not in range(128)' and 'UnicodeError: ASCII encoding error: ordinal not in range(128)

執行時出現以上錯誤就表視編碼上出現錯誤,解決方法:

value = unicode(value, "utf-8")

完整一點:



   1: try:
   2:     unicode(value, "ascii")
   3: except UnicodeError:
   4:     value = unicode(value, "utf-8")
   5: else:
   6:     # value was valid ASCII data
   7:     pass

但有時卻不知道網站或文件編碼,則可以安裝 chardet 套件:

>>> import chardet
>>> import urllib
>>> urlread = lambda url: urllib.urlopen(url).read()
>>> chardet.detect(urlread("http://www.google.com"))
{'confidence': 0.99, 'encoding': 'utf-8'}
>>>

如果是在檔案寫入時發生的錯誤:


FILE = open('jpm03.html','w') 預設是ascii所以得改成


import codecs


FILE = codecs.open('jpm03.html','w','utf-8')  即可。

沒有留言:

張貼留言