如何使用%作为分隔符字符串在Python3中对UTF-16进行解码,以恢复原始格式?

2024-05-17 11:35:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在和一家移动运营商合作,他们用某种编码的utf-16字符串通知我。 例如,'%u062a%u0633%u062a'在波斯语中相当于'تست'。我不确定这些字符串的确切编码是什么。如何将它们转换为它们的真实形式,如'تست'?在


Tags: 字符串编码形式utf运营商u062a
2条回答

您可以通过%u拆分字符十六进制值,然后使用内置函数chr查找unicode字符。在

def convert_to_unicode(text):
    return_str = ''
    for character in text.split('%u'):
        if character:
            chr_code = int(character, 16)
            return_str += chr(chr_code)
    return return_str


text = '%u062a%u0633%u062a'
print(convert_to_unicode(text))

输出:

^{pr2}$

或者您可以使用unicode转义,如another answer中的blhsing。在

def convert_to_unicode(text: str):
    # Replace %.
    text = text.replace('%', '\\')
    # Escape unicode into character.
    text = text.encode().decode('unicode-escape')
    return text

一种简单的方法是将%替换为\,使其成为带有转义unicode字符的python文本,然后用unicode-escape对其进行解码。在

s = b'%u062a%u0633%u062a'
print(s.replace(b'%', b'\\').decode('unicode-escape'))

相关问题 更多 >