1,AttributeError: 'str' object has no attribute 'decode',:ide
decode encode函數
bytes ------> str(unicode)------>bytesgoogle
decode的目標要死bytes!
編碼
2,UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb7 in position 0: invalid start byteurl
常看到這種:\xb7\xfb\xe5\xabspa
>>> a='符瀚'code
>>> a.encode('gb2312')orm
b'\xb7\xfb\xe5\xab'utf-8
>>> a.encode('utf-8')unicode
b'\xe7\xac\xa6\xe7\x80\x9a'
因而可知utf-8和gb2312來編譯中文的時候都是相似"\x"開頭。
這個錯誤就是使用編碼解碼不對,能夠嘗試用gb2312來解碼。
3."\u65e0\u6cd5\u901a\u8fc7\u626b\u7801\u627e\u5230「
SyntaxError: EOL while scanning string literal引號錯誤中文的……
這種是unicode格式,win下不知道爲啥不正常了,正常轉爲爲 b = a.encode('utf-8').decode('utf-8')就能夠了
發現一個檢查編碼的包:
hardet實例
>>> import urllib
>>> rawdata = urllib.urlopen('http://www.google.cn/').read()
>>> import chardet
>>> chardet.detect(rawdata)
{'confidence': 0.98999999999999999, 'encoding': 'GB2312'}
>>>chardet能夠直接用detect函數來檢測所給字符的編碼。函數返回值爲字典,有2個元數,一個是檢測的可信度,另一個就是檢測到的編碼。
>>> import winsound
>>> s='\u674e\u6587\u660a'
>>> s
'\\u674e\\u6587\\u660a'
>>> s.decode('unicode-escape')
u'\u674e\u6587\u660a'
>>> print s.decode('unicode-escape')
李文昊
>>>