我构建了一个将十六进制字符串转换为 Unicode 格式的代码,但打印后,输出转换不起作用,而当从输出复制并将其放入打印(u'output')时,阿拉伯文本出现
Python代码
input ="062A06450020062A62C062F064A062F0020";
i = 0 ;
n ="\\"+"u";
while i < (len(input)):
n += input[i:i+4] + "\\"+"u";
i = i + 4;
output = str(n[0:(len(n)-2)]) ;
print (u'%s'%output)
输出:
\u062A\u0645\u0020\u062A\u62C0\u62F0\u64A0\u62F0\u020
复制输出并使用 print Unicode:
print (u'\u062A\u0645\u0020\u062A\u62C0\u62F0\u64A0\u62F0\u020')
出现阿拉伯文字
最佳答案
您不能通过在字符串 values 中添加 \u
来生成 Unicode 代码点,不,因为 \u
序列是字符串 literal 语法。 Python 解析器而不是解释器使用它来生成 Unicode 值。
您的输入也太短了;你在某处还需要 一个数字,看起来你在 62C
之前的中间可能缺少一个 0
。
您基本上拥有大端顺序的十六进制 UTF-16;只需从十六进制解码并解码为 utf-16-be
:
from binascii import unhexlify
unhexlify(input).decode('utf-16-be')
演示,带有更正的输入数据:
>>> from binascii import unhexlify
>>> input ="062A06450020062A062C062F064A062F0020"
>>> unhexlify(input).decode('utf-16-be')
'تم تجديد '
>>> print(unhexlify(input).decode('utf-16-be'))
تم تجديد
关于python - 使用 Python 将十六进制文本转换为阿拉伯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40927544/