Python:将 Unicode-Hex-String 转换为 Unicode

标签 python unicode hex

我有一个由具有该功能的 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 字节的 block 使用 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) 已经破坏了您开始的文本。您需要先对其进行编码,然后才将其视为字节串。

关于Python:将 Unicode-Hex-String 转换为 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6773270/

相关文章:

python - 根据字符串所在位置对 map 上的字符串元素进行计数,并用计数填充网格

python - 将新数据附加到python中的json文件中

python - 哪个更糟糕的设计 : sharing data between tests, 或每个测试的多个断言?

python - 如果不是 unicode 则解码

python - 从十六进制到有符号整数的转换不起作用

java - 十六进制转换为 EBCDIC

python - 在 Span 内使用 selenium PhantomJS 获取文本

php - 插入数据库php后,表情符号显示为问号

python - 如何使用 BeautifulSoup 将 UTF-8 编码的 HTML 正确解析为 Unicode 字符串?

c - RFC 3174 (SHA-1) 中指定的十六进制数的含义