python编码转换语句_Python中的字符编码问题

初学Python,本身就在一些语句处有些迷惑,如 a = u'你好',不知加上这个Unicode参数有何作用。一直到做爬虫抓取新闻时,在cmd的输出上总是出现错误。经过检索相关知识后,对一些编码问题做个小总结,其中参杂个人猜测,难免会有错误,以后再慢慢修改了。

1.一定要声明#coding=XXX吗?

首先.py文件中,编码默认是ASCII的,一旦py文件中出现了中文类似编码,IDE就会提示

121630408114481.png

也就是提示文中出现了非ASCII,建议在文件开始制定编码,当然我们常用的是#coding:utf8 (貌似用那个带好多花花的,或者utf-8写法都无所谓)

2.Unicode编码是做什么的?

产生历史什么的就不提了,在python中有两种字符串类型,unicode和str ,简单来说Unicode是python内部表示字符串的方法,同时很多终端也是可以识别这个,而str的编码格式就是文件其实#coding:指定的。写个例子

121639107641275.png这个直接在windows下执行的话显示:

121639490774145.png

3.如何进行编码转换

想要解决2中的问题,很明显,需要将s1按照utf-8解码成为原始模式(unicode)模式OK,如s3 = s1.decode('utf8') 然后print s3 即可。可以这么总结:在读取一个内容时,或者说从网上抓取内容时,Python会将其保存在str中,如果说想要转换成其他的类型,需要先进性相应的decode,然后再encode改变格式。举个例子:

#coding=utf8

s1 = '哈哈's2= u'哈哈'uni_s1= s1.decode('utf8')assert(uni_s1 == s2) #如果不相等抛出异常

str_s2 = s2.encode('utf8')assert(str_s2 ==s1)

raw_input("")

这个直接运行显示无错。也比较好理解了。

最近在抓取一个网页上的内容时,在cmd中显示出来总是乱码,现在发现了问题,原来是utf8的格式,现在在内容显示时候加上.decode('utf8').encode('gbk')便能正常显示中文了。或者说,在read网页时候,直接解码为unicode也可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值