python 编码问题记录

174436_8fGO_2367514.png1,AttributeError: 'str' object has no attribute 'decode',:

decode              encode

bytes ------> str(unicode)------>bytes

decode的目标要死bytes!

2,UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb7 in position 0: invalid start byte

常看到这种:\xb7\xfb\xe5\xab

>>> a='符瀚'

>>> a.encode('gb2312')

b'\xb7\xfb\xe5\xab'

>>> a.encode('utf-8')

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

李文昊

>>>


转载于:https://my.oschina.net/u/2367514/blog/514418

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值