汉字编码问题
linux环境,默认>>> s='中文'
>>> s
'\xe4\xb8\xad\xe6\x96\x87'
请问这个'\xe4\xb8\xad\xe6\x96\x87'是什么编码? unicode >>> s=u'中文'
>>> s
u'\u4e2d\u6587'
>>>
那这个呢? 本帖最后由 Linux_manne 于 2014-08-14 11:44 编辑
回复 3# bigfrog7
在python中str和unicode在编码和解码过程中,如果将一个str直接编码成另一种编码,会先把str解码成unicode,采用的编码为默认编码,一般默认编码是anscii
>>> s='中文'
>>> x=u'中文'
>>> type(s)
<type 'str'>
>>> type(x)
<type 'unicode'> 然后unicode 对象可以转成自己需要的码
>>> x.encode('utf-8')
'\xe4\xb8\xad\xe6\x96\x87' 回复 5# Linux_manne
感谢热情回答!
'\xe4\xb8\xad\xe6\x96\x87'应该是utf8编码
因为可以用utf8 decode:
>>> s
'\xe4\xb8\xad\xe6\x96\x87'
>>> s.decode('utf-8')
u'\u4e2d\u6587'
>>> print s.decode('utf-8')
中文
>>> s
'\xe4\xb8\xad\xe6\x96\x87'
u'\u4e2d\u6587'这应该是unicode编码
不知我说的对吗? 与你使用的telnet或ssh连接服务器的终端的设置有关。
这里应当是utf8,因为是6字节。如果是4字节的话应当是gbk。都是可以在终端上设置编码类型的。 回复 6# bigfrog7
嗯 是的。。 主要是str 在python 内部都会转成unicode然后会 通过unicode 去转码 感谢大家解惑,谢谢!
页:
[1]