>>> a = "我" # chinese
>>> b = unicode(a,"gb2312")
>>> a.__class__
<type 'str'>
>>> b.__class__
<type 'unicode'> # b is unicode
>>> a
'\xce\xd2'
>>> b
u'\u6211'
>>> c = u"我"
>>> c.__class__
<type 'unicode'> # c is unicode
>>> c
u'\xce\xd2'
b
和c
都是unicode,但是>>> b
输出{
当您只需输入对象的名称时,交互式Python将显示该对象的表示形式。另一方面,print命令尝试渲染字符。名为a的变量是字符串类型。实际上,python2.x中的字符串是一系列字节。所以,这取决于你的工作环境。对unicode()函数说现在使用gb2312编码。如果为真,则b包含给定编码中字符的正确表示。在
试着
对你来说。你很可能会看到想要的结果。同时尝试:
^{pr2}$表示是(如果可能的话)一个文本字符串,当复制粘贴到源代码时,将创建具有相同值的对象。在
看看马克·皮尔格林的《潜入Python 3》,第4章。字符串(http://getpython3.com/diveintopython3/strings.html)来获得一个好的、可读的解释。在
当您输入
"我"
时,Python解释器会从终端获得该字符在本地字符集中的表示形式,由于""
,它将其逐字节存储在字符串中。在我的UTF-8系统上,这是'\xe6\x88\x91'
。在你的,它是'\xce\xd2'
,因为你使用的是GB2312。这解释了变量a
的值。在当您输入
u"我"
时,Python解释器不知道我
字符是哪个编码的。它的作用与普通字符串几乎相同:它将字符的字节存储在Unicode字符串中,将每个字节解释为Unicode码位,因此结果u'\xce\xd2'
(或者,在我的框中,u'\xe6\x88\x91'
)。在这个问题只存在于交互式解释器中。当您编写Python脚本或模块时,您可以specify the encoding靠近顶部,Unicode字符串就会显示出来。E、 g.在我的系统中,下面的命令会将单词liberté打印两次:
相关问题 更多 >
编程相关推荐