python - 在unicode字符串中转换字节字符串

标签 python string unicode python-3.x type-conversion

我有这样的代码:

a = "\u0432"
b = u"\u0432"
c = b"\u0432"
d = c.decode('utf8')

print(type(a), a)
print(type(b), b)
print(type(c), c)
print(type(d), d)

然后输出:

<class 'str'> в
<class 'str'> в
<class 'bytes'> b'\\u0432'
<class 'str'> \u0432

为什么在后一种情况下我看到的是字符代码,而不是字符? 如何将 Byte 字符串转换为 Unicode 字符串,以便在输出时我看到的是字符而不是其代码?

最佳答案

在字符串(或 Python 2 中的 Unicode 对象)中,\u 有一个特殊的含义,即“这里有一个由它的 Unicode ID 指定的 Unicode 字符”。因此 u"\u0432" 将产生字符 в.

b'' 前缀告诉你这是一个 8 位字节序列,并且 bytes 对象没有 Unicode 字符,所以 \u 代码没有特殊意义。因此,b"\u0432" 只是字节的序列 \,u,0,432

本质上,您有一个 8 位字符串,其中不包含 Unicode 字符,而是包含 Unicode 字符的规范。

您可以使用 unicode 转义编码器转换此规范。

>>> c.decode('unicode_escape')
'в'

关于python - 在unicode字符串中转换字节字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13837848/

相关文章:

unicode - 如何显示遗留计算的那些Unicode符号?

python - 如何在python中识别不同颜色/肤色的相同表情符号?

python - 使用 Python 3 对文件进行 Xor 加密/解密

python - 我想用 Python 为基于桌面的应用程序开发一个框架。我该怎么办?

java - 为什么在 java 中十六进制/字符串/字节转换后我得到的是 3 个字节而不是 1 个字节?

c - 将字符串分配给二维数组

unicode - Erlang os :cmd/1 run a command with Unicode characters?如何

python - 在python中播放声音文件

Python:获取一个数组并根据某些条件将其分解为子数组

将 4 字节 ip 地址转换为标准的点分十进制表示法