Python:将Unicode十六进制字符串转换为Unicode
问题内容:
我有一个用该函数的unicode字符串制成的十六进制字符串:
def toHex(s):
res = ""
for c in s:
res += "%02X" % ord(c) #at least 2 hex digits, can be more
return res
hex_str = toHex(u"...")
这将返回如下所示的字符串:
"80547CFB4EBA5DF15B585728"
这是6个中文符号的序列。
但
u"Knödel"
转换为
"4B6EF664656C"
我现在需要的是一个将其转换回原始unicode的函数。中文符号似乎用2字节表示,而第二个示例中所有字符都用1字节表示。因此,我不能只对每个1或2字节块使用unichr()。
我已经尝试过了
binascii.unhexlify(hex_str)
但这似乎是逐字节转换并返回一个字符串,而不是unicode。我也尝试过
binascii.unhexlify(hex_str).decode(...)
具有不同的格式。从来没有原始的unicode字符串。
提前非常感谢您!
问题答案:
这似乎很好用:
binascii.unhexlify(binascii.hexlify(u"Knödel".encode('utf-8'))).decode('utf-8')
回到原始对象。如果中文文本编码正确,您也可以这样做,但是ord(x)
已经破坏了您开始使用的文本。您需要先对其进行编码,然后才将其视为一串字节。