让我们以字符Latin Capital Letter a with Ogonek (U+0104)为例。
我有一个int表示它的utf-8编码形式:

my_int = 0xC484
# Decimal: `50308`
# Binary: `0b1100010010000100`

如果使用unichr函数,我得到:\uC484(u+c484)
但是,我需要它输出:Ą
如何将my_int转换为Unicode码位?

最佳答案

要将整数0xC484转换为bytestring(unicode字符的utf-8表示形式),可以使用'\xc4\x84'

>>> import struct
>>> struct.pack(">H", 0xC484)
'\xc4\x84'

…其中,format string中的Ą表示big endian,而struct.pack()表示unsigned short int。
一旦有了UTF-8字节串,就可以像往常一样将其解码为Unicode:
>>> struct.pack(">H", 0xC484).decode("utf8")
u'\u0104'

>>> print struct.pack(">H", 0xC484).decode("utf8")
Ą

08-24 13:42