我构建了一个将十六进制字符串转换为Unicode格式的代码但是在打印之后,输出转换在从输出复制并将其打印出来时不起作用(u'输出')阿拉伯文本出现
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')
出现阿拉伯文字
答案 0 :(得分:0)
您不能通过在字符串值中添加\u
来生成Unicode代码点,不,因为\u
序列是字符串 literal 语法。它由Python解析器使用,而不是解释器,用于生成Unicode值。
您的输入也太短;在某个地方你需要多一个数字,看起来你在0
之前的中间错过了62C
。
你基本上有big-endian顺序的十六进制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'))
تم تجديد