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

李文昊

>>>

相关文章
相关标签/搜索