python - 使用 Python 将十六进制文本转换为阿拉伯文本

标签 python linux utf-8

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

相关文章:

c++ - 如何在 C++ 中更改拉丁 UTF-8 字符串的大小写?

python - 从日期时间获取日期和小时作为新列

python - LSAT 的逻辑游戏部分出现了哪一类组合问题?

java - Linux 上 C 与 Java 的接口(interface)

linux - 如何使别名着色grep命令

linux - 如何创建一个没有root权限的无法杀死的进程?

bash - 将 shell 脚本设置为 utf8

python - 图像的二维旋转

python - 嵌套字典中值的存在

utf-8 - openssl req utf8 字符串