>> b = unicode(a,"gb2312") >>> a.__class__ >>> b.__class__ # b is-6ren">
gpt4 book ai didi

python - Python 中的 Unicode 和 `decode()`

转载 作者:太空狗 更新时间:2023-10-29 20:50:26 26 4
gpt4 key购买 nike

>>> 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输出u'\u6211',而>>> c输出u'\xce\xd2',为什么?

最佳答案

当您输入 "I" 时,Python 解释器从终端获取该字符在您的本地字符集中的表示,由于 “”。在我的 UTF-8 系统上,它是 '\xe6\x88\x91'。在你的,它是 '\xce\xd2' 因为你使用的是 GB2312。这解释了变量 a 的值。

当你输入 u"I" 时,Python 解释器不知道 I 字符在哪个编码中。它所做的与 for 几乎相同普通字符串:它将字符的字节存储在 Unicode 字符串中,将每个字节解释为 Unicode 代码点,因此结果错误 u'\xce\xd2'(或者,在我的盒子上,u'\xe6\x88\x91').

这个问题只存在于交互式解释器中。当你编写 Python 脚本或模块时,你可以 specify the encoding靠近顶部,Unicode 字符串将正确显示。例如,在我的系统上,以下命令打印单词 liberté 两次:

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

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

关于python - Python 中的 Unicode 和 `decode()`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10277256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com