码迷,mamicode.com
首页 > 其他好文 > 详细

第四篇 爬虫去重策略,以及编码问题

时间:2017-10-03 13:11:47      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:coding   gb2312   lin   技术   utf8编码   不同   line   logs   ack   

 

 

  技术分享

 

unicode和utf-8编码

技术分享

技术分享

技术分享

 PS:数据在内存里,使用unicode编码会方便很多,因为这样占用的bit是统一的,而utf8对于不同的语言占用的bit不同的,但存储文件使用utf8编码会减少很多空间,所以需要灵活转换。

 下面是py2中的例子,python存储在内存里的数据是自动转化成unicode编码的,通过sys库的getdefaultencoding方法可以查看python2解释器的默认编码是:ascii码,

变量s是英文,直接编码成utf8没问题,但变量su是中文,直接编码成utf8会报错,因为执行encode的时候,实际上会先调用decode,而传参是python的默认编码(ascii)。

注意一点:我这里是在unbuntu操作的,linux终端的默认编码是utf8,变量su是经过了linux的一层转换,所以使用decode时传参是utf8,在windows里,默认编码是gb2312

再注意一点:decode方法的作用是把别的编码格式的数据解码成unicode,encode方法是把数据 编码 成指定编码格式的数据。

>>> s = "English"
>>> su = "中文"
>>> import sys

>>> sys.getdefaultencoding()
ascii
>>> s.encode("utf8")
English
>>> su.encode("utf8")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: ascii codec cant decode byte 0xe4 in position 0: ordinal not in range(128)
>>> su1 = su.decode("utf8")
>>> su1
u\u4e2d\u6587
>>> su1.encode("utf8")
\xe4\xb8\xad\xe6\x96\x87
>>> su
\xe4\xb8\xad\xe6\x96\x87
>>> suu2 = u"中文"
>>> suu2
u\u4e2d\u6587
>>> suu2.encode("utf8")
\xe4\xb8\xad\xe6\x96\x87
>>> 

 

在py3,python解释器的默认编码统一成unicode.

 

第四篇 爬虫去重策略,以及编码问题

标签:coding   gb2312   lin   技术   utf8编码   不同   line   logs   ack   

原文地址:http://www.cnblogs.com/laonicc/p/7441044.html

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