码迷,mamicode.com
首页 > 编程语言 > 详细

Python中的字符编码问题

时间:2014-08-12 18:28:44      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   strong   文件   2014   问题   

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

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

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

    bubuko.com,布布扣

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

  2.Unicode编码是做什么的?

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

bubuko.com,布布扣这个直接在windows下执行的话显示:bubuko.com,布布扣

  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也可!

 

    

Python中的字符编码问题,布布扣,bubuko.com

Python中的字符编码问题

标签:style   blog   http   color   strong   文件   2014   问题   

原文地址:http://www.cnblogs.com/hi-net/p/3907688.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!