Python中的32位Unicode

6
Python有一个转义序列\u,用于显示Unicode值。但是这仅限于16位Unicode值。也就是说,
>>> '\u1020'
'ဠ'

32位Unicode值无法工作。也就是说

>>> '\u00001000'
'\x001000'

很明显是错误的。Python 文档 提到:

转义序列 \u0020 表示在给定位置插入 Unicode 字符,其序数值为 0x0020(空格字符)。


3
注意:谈论“n位Unicode”是具有误导性的。\u\U后面的数字是16位和32位十六进制数(这只意味着相应地有4个和8个十六进制数字),但它并不说明将相应的Unicode代码点序列化为字节(位)需要多少字节。例如,'\u044F'utf-8编码中占用2个字节,但在cp1251中却只占用一个字节。 - jfs
@J.F.Sebastian,那么我应该如何表达我的问题呢?请您对此进行指导。 - Bhargav Rao
1
如何在Python字符串字面值中指定非BMP Unicode字符?或者“如何使用Unicode转义\uXXXX来表示Unicode码点> 0xFFFF?”请勿更改您的标题。其他人可能存在相同的误解,这对他们可能有用。 - jfs
1个回答

13

Python的Unicode使用指南明确提到了使用'\U'来表示32位Unicode序列。

>>> "\u0394"                          # Using a 16-bit hex value
'Δ'
>>> "\U00000394"                      # Using a 32-bit hex value
'Δ'

在这种情况下

>>> '\U00001000'
'က'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接