python 編碼問題記錄

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')

李文昊

>>>

相關文章
相關標籤/搜索