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')
李文昊
>>>