一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

python中文编码转换与正确输出

时间:2011-05-14 编辑:简简单单 来源:一聚教程网

Python代码中字符串的默认编码与代码文件本身的编码一致
decode的作用是将其他编码的字符串转换成unicode编码
encode的作用是将unicode编码转换成其他编码的字符串

>>> s="中文"
>>> s
'xd6xd0xcexc4'
>>> s.decode("gbk")
u'u4e2du6587'
>>> print s.decode("gbk")
中文
>>> print s
中文
>>> s.decode("gbk").encode("gbk")
'xd6xd0xcexc4'
>>> print s.decode("gbk").encode("gbk")
中文
>>>

>>> a='中国人'
>>> a
'xd6xd0xb9xfaxc8xcb'
>>> b = unicode(a,'gbk')
>>> b
u'u4e2du56fdu4eba'
>>> a.find('中')
0
>>> a.find('人')
4
>>> b.find('人'.decode('gbk'))
2
>>> print a
中国人
>>> print b
中国人

这里find函数查到的结果应该很好理解啦。b中的find必须decode一下,否则会出错。至于为什么print出来的是汉字,我还没有研究出来呢。请高手告知。

>>> b.encode('gb18030')
'xd6xd0xb9xfaxc8xcb'
>>> b.encode('cp936')
'xd6xd0xb9xfaxc8xcb'
>>> b.encode('gbk')
'xd6xd0xb9xfaxc8xcb'
>>> b.encode('utf-8')
'xe4xb8xadxe5x9bxbdxe4xbaxba'

说明gb18030、gbk、gb2312以及cp936等都可以进行中文编码,并且结果还一致,utf-8也可以,只是编码方式不一样,所以结果不同而已。原理上他们都是一致的。

>>> type(a)

>>> type(b)

>>> type(b.encode('utf-8'))

说明python对字符串有两种编码方式,一种就是普通方式,另外一种就是unicode。注意utf-8也认为是普通的编码方式

下面提供了编辑转换

汉字转为html实体字符得了。
 echo mb_convert_encoding ("重玩一次", "HTML-ENTITIES", "gb2312");

编码转换
s = "中文"
s1 = u"中文"

unicode -> gbk
 s1.encode("gbk")
unicode -> utf-8
 s1.encode("UTF-8")
gbk ->unicode
 unicode(s, "gbk")
 或者
 s.decode("gbk")

热门栏目