在Python中使用Unicode和“decode()”

2024-09-30 12:19:05 发布

您现在位置:Python中文网/ 问答频道 /正文

>>> 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'

bc都是unicode,但是>>> b输出{},和{}输出{},为什么?在


Tags: istypeunicodeclasschinesestrgb2312xd2
2条回答

当您只需输入对象的名称时,交互式Python将显示该对象的表示形式。另一方面,print命令尝试渲染字符。名为a的变量是字符串类型。实际上,python2.x中的字符串是一系列字节。所以,这取决于你的工作环境。对unicode()函数说现在使用gb2312编码。如果为真,则b包含给定编码中字符的正确表示。在

试着

>>> print 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é打印两次:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

print(u"liberté")
print("liberté")

相关问题 更多 >

    热门问题