繁体   English   中英

如何将 unicode integer 转换为 utf-8 字符?

[英]How to convert a unicode integer to utf-8 character?

我有一组 unicode 代码点存储为整数,我想将它们编码为 UTF-8。如果我理解正确,UTF-8 只是整数的编码(它特别用于 unicode 的事实并不是 UTF 的基础-8),所以这应该只是在 UTF-8 编码中编码 integer 的问题。 是否有执行此操作的标准实用程序,如果没有,是否有手动执行此操作的简单方法?

有一个简单的方法。 如果您使用的是 windows,如果由于平台限制超过 UTF-16LE 字符,您可能会遇到问题。 在 linux 上,完整的 unicode 应该是安全的。

>>> my_unicode_codepoints = [1234, 2345, 3456, 4576] # example codepoints

>>> [chr(i) for i in unicode_codepoints] # step 1: use python automagic for casting to wide enough chars
['Ӓ', 'ऩ', '\u0d80', 'ᇠ']

>>> "".join([chr(i) for i in unicode_codepoints]) # step 2: join to string
'Ӓऩ\u0d80ᇠ'

>>> "".join([chr(i) for i in unicode_codepoints]).encode("utf-8") # step 3: encode your string
b'\xd3\x92\xe0\xa4\xa9\xe0\xb6\x80\xe1\x87\xa0'

最后一行是您要查找的结果。

这可能是不言自明的

[ord(c) for c in ('a', 'ö', '🤗')]
>>> [97, 246, 129303]

[chr(n) for n in [97, 246, 129303]]
>>>> ['a', 'ö', '🤗']

chrord都是内置函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM