事情是这样的,自己想用python将腾讯首页上的中文全部取出,遇到了一些困难,又扯到了python的编码问题。所以,研究了一下。
Python内部有一个unicode对象,所以python的内置编码为unicode编码。如果你的源代码文件为utf-8编码,那么请你在你的源代码第一行加上 -*- coding:utf-8 -*- 这一句,以告诉python解释器,你的源代码是用utf-8编码的。你的字符串也就是str,是utf-8编码的。那么你在处理的时候,就要用decode(‘utf-8’),来创建一个unicode对象。不多说,用例子来过一遍你就懂了。
1 x = ‘中’ #x为str类型, 是utf-8 编码的 2 3 y = x.decode(‘utf-8’) #y为unicode类型,是unicode编码的
unicode和str在python中是两个不同的数据类型,看例子:
1 x = '中国' 2 3 print repr(x[0]) 4 5 y = x.decode('utf-8') 6 7 print repr(y[1])
结果为:
'\xe4'
u'\u56fd'
也就是有网友所说的str相当于java中的byte[],而unicode就如char[]。有这点味道在里面。
还强调一下,str(一个unicode对象)得到的结果是:unicode 到 utf-8的转换。
1 x = '中国' 2 3 print repr(x[0]) 4 5 y = x.decode('utf-8') 6 7 print repr(y[1])
结果为:
'\xe4'
'\xe5\x9b\xbd'
附:关于提取出中文的问题:请参照stackoverflow上的一个问答
http://stackoverflow.com/questions/2718196/find-all-chinese-text-in-a-string-using-python-and-regex
再附一个讲这类问题的博客: