gpt4 book ai didi

python - 在 Windows 窄 Python 构建上识别宽 Unicode 点

转载 作者:太空宇宙 更新时间:2023-11-03 18:19:17 27 4
gpt4 key购买 nike

我在 Windows 上有一个狭窄的 Python 2.7.6 版本。我还有一个包含“窄”(< 0x10000) 和“宽”(> 0xFFFF) Unicode 代码点的字符串。

>>> wide1 = u'\U0002b740'
>>> wide2 = u'\ud86d\udf40'
>>> wide1 == wide2
True
>>> narrow = u'\ud86d'
>>> s = wide1 + narrow

但是当我迭代字符串时,它无法识别宽代码点:

>>> for c in s:
>>> c
u'\ud86d'
u'\udf40'
u'\ud86d'

并且不可能找出一个 char 是窄代码点还是宽代码点的一部分。

最佳答案

你不能。高 Unicode 代码点在内部表示为 UTF-16 代理项。

U+D86D 和 U+DF40 代码点就是这样的替代品,无论如何你都不应该在正常的 Unicode 文本使用中看到它。引用自 Wikipedia article on UTF-16 :

The Unicode standard permanently reserves these code point values for UTF-16 encoding of the lead and trail surrogates, and they will never be assigned a character, so there should be no reason to encode them. The official Unicode standard says that no UTF forms, including UTF-16, can encode these code points.

因此,U+D800 到 U+DFFF 代码点不应被视为窄点;它们是宽代码点的一半,这就是它们的目的。

关于python - 在 Windows 窄 Python 构建上识别宽 Unicode 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24433892/

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