我有一個Unicode字符串與功能做了一個十六進制的字符串:的Python:轉換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字符串。
非常感謝您提前!
感謝您的回答!我的問題是,我從第三方軟件獲得Hex-String,因此我對編碼沒有影響... – Robert
問他們什麼是編碼。否則,你將無法正確解碼它... – viraptor
此外,它似乎文本可能是utf-16。 'binascii.unhexlify( 「80547CFB4EBA5DF15B585728」)。解碼('utf-16')似乎返回一些亞洲人(雖然無法驗證) – viraptor