关于编码的理论随处可见。这里就举一些例子,或许有助于你了解python下的编码问题。
首先在windows系统下开一个dos窗口,键入python,开始进入python提示符>>>。
s='我爱你'
print s 出来的是:'\xce\xd2\xb0\xae\xc4\xe3',这是gb2312编码之后的“我爱你”,这里的s是一个str对象,如何将s变成unicode string object呢?很简单,可以采用builtin function :unicode(),或者string method:decode()
us=unicode(s,'gb2312'),print us,出来的是:u'\u6211\u7231\u4f60'。这个过程叫解码(decode)。
或者us = s.decode('gb2312'),如果以上两个语句出错,提示LookupError: unknown encoding:,这就是说你没有安装gb2312的codecs。你应该先安装cjkcodecs之后,再继续下面的操作。
us版本的“我爱你”可以在编码(encode)成gb2312或者utf-8。
gb_s=us.encode('gb2312'),然后print gb_s,出来的是'\xce\xd2\xb0\xae\xc4\xe3'
utf-8_s=us.encode('utf-8') ,print utf-8_s,出来的是:'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'
如果尝试us.encode('big5'),当然会出错。因为big5编码里没有这3个字,其实从unicode字串里也可以看出来,u'\u6211\u7231\u4f60',big5编码不再这个区段里面。
那么,u'我爱你'这代表什么呢?u'我爱你'这是一个没有语法错误的错误表达式,它代表的是子虚乌有的东西。你要在python脚本里直接输入常量的unicode,只能是u'\u6211\u7231\u4f60'这样的形式。