我有一个十六进制字符串,是通过以下函数从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("80547CFB4EBA5DF15B585728").decode('utf-16')
返回的似乎是一些亚洲语言(无法验证具体是哪种语言)。 - viraptor(codecs.BOM_UTF16_BE + binascii.unhexlify("80547CFB4EBA5DF15B585728")).decode('utf-16')
似乎做了正确的事情。 再次感谢您的回答! - Robert