gpt4 book ai didi

python - 如何从 Python 3 中的 UTF-16 代码点获取字符?

转载 作者:行者123 更新时间:2023-11-28 22:12:37 24 4
gpt4 key购买 nike

我有一个 UTF-16 代码点列表,我需要将其转换为它们以编程方式表示的实际字符。这在 Python 3 中似乎很难做到。

例如,我有一个字符的数字 55357 和 56501,我知道这是这张钞票表情符号:💵 但我不知道如何在 Python 中转换它。我首先尝试了 chr(55357) + chr(56501),但 Python 似乎假定它是 UTF-8 编码的,因此给了我损坏的 Unicode。

然后我尝试重新编码字符串,但由于它是损坏的 UTF-8,它给我的似乎是损坏的 UTF-16。如果我告诉它不用 (chr(55357) + chr(56501)).encode('utf-8', 'surrogatepass'),我实际上可以获得字符,但由于我还不能理解的原因,它被编码在...CESU-8 中。这不是 Python 原生支持的编码,我找不到一个编解码器来转换它。

我想我可以将它们写入磁盘,然后用正确的编码读取它们,但这听起来真的很糟糕。

在 Python 3 中是否有合理的方法来做到这一点?

最佳答案

诀窍不是弄乱 chr 而是转换为字节数组,然后您可以将其解码为字符串:

a, b = 55357, 56501
x = a.to_bytes(2, 'little') + b.to_bytes(2, 'little')

print(x.decode('UTF-16'))

这可以推广到任意数量的整数:

data = [55357, 56501]
b = bytes([x for c in data for x in c.to_bytes(2, 'little')])
result = b.decode('utf-16')

chr(55357) + chr(56501) 这样的东西不起作用的原因是 chr 假定没有编码。它适用于原始 Unicode 代码点,因此您可以组合两个不同的字符。正如另一个答案所指出的那样,您必须对这两个字符串进行编码并重新解码,或者按照我的建议获取字节并解码一次。

关于python - 如何从 Python 3 中的 UTF-16 代码点获取字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54644405/

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