如何将 unicode 整数转换为 utf-8 字符?
How to convert a unicode integer to utf-8 character?
我有一组存储为整数的 unicode 代码点,我想将它们编码为 UTF-8。如果我理解正确的话,UTF-8 只是整数的编码(它特别用于 unicode 的事实并不是 UTF-8 的基础),所以这应该只是在 UTF-8 中编码整数的问题编码。是否有执行此操作的标准实用程序,如果没有,是否有手动执行此操作的简单方法?
这可能不言自明
[ord(c) for c in ('a', 'ö', '')]
>>> [97, 246, 129303]
[chr(n) for n in [97, 246, 129303]]
>>>> ['a', 'ö', '']
有一个简单的方法。如果您在 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'
最后一行是您要查找的结果。
我有一组存储为整数的 unicode 代码点,我想将它们编码为 UTF-8。如果我理解正确的话,UTF-8 只是整数的编码(它特别用于 unicode 的事实并不是 UTF-8 的基础),所以这应该只是在 UTF-8 中编码整数的问题编码。是否有执行此操作的标准实用程序,如果没有,是否有手动执行此操作的简单方法?
这可能不言自明
[ord(c) for c in ('a', 'ö', '')]
>>> [97, 246, 129303]
[chr(n) for n in [97, 246, 129303]]
>>>> ['a', 'ö', '']
有一个简单的方法。如果您在 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'
最后一行是您要查找的结果。