使用Python

时间:2016-12-02 08:15:21

标签: python linux utf-8

我构建了一个将十六进制字符串转换为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')

出现阿拉伯文字

1 个答案:

答案 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'))
تم تجديد