Python 编码

最近弄网页抓取,发现Python的编码让人头疼,特别是中文。

开始介绍一些概念,若是概念没理清楚,后续也会出错,就像博主我,尼玛苦了一天,才发现概念理解错了。。。。大哭大哭大哭

我也是看到一篇文章后才醒悟过来:http://www.jb51.net/article/17560.htm

<span style="font-size:18px;">>>> a='爱'
>>> a.decode('utf-8')

Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    a.decode('utf-8')
  File "F:\Python27\lib\encodings\utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 0: invalid start byte</span>

一开始就用a.decode('utf-8')总是出错,原先理解为将字符串a分解成utf-8编码格式,看了其他一些参考的文章也让我越陷越深,最后发现这句话的本意是a对应括号内的编码格式转换成unicode。

注意:Python 在做编码转换时,通常需要以unicode作为中间编码哦

>>> type(a)
<type 'str'>
>>> a.decode('gb2312')
u'\u7231'
>>> type(a.decode('gb2312'))
<type 'unicode'>

然后将unicode转换成其他编码:eg:a.encode('gb2312')

就是将编码是unicode的a 转换成gb2312

例子:

a='爱'
>>> a.decode('gbk')
u'\u7231'
>>> b=a.decode('gbk')
>>> type(b)
<type 'unicode'>
>>> b.encode('utf-8')
'\xe7\x88\xb1'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值