python阿拉伯语编码问题

时间:2017-04-19 13:07:20

标签: python encoding

我有一个带有windows-1256编码的文本。现在我想将文本从阿拉伯语(windows-1256)转换为utf-8

示例文字:

Óæí Ïæã ÈíåÞí

结果:

سوي دوم بيهقي

我使用此代码解码并编码为utf-8

# -*- coding: utf-8 -*-

data = "Óæí Ïæã ÈíåÞí"
print data.decode("windows-1256", "replace")
print data.encode("windows-1256")

该代码返回此结果:

أ“أ¦أ­ أڈأ¦أ£ أˆأ­أ¥أ‍أ­
Traceback (most recent call last):
  File "mohmal2.py", line 5, in <module>
    print data.encode("windows-1256")
  File "/usr/lib/python2.7/encodings/cp1256.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_table)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)

我找到了一个可以转换此文字的网站:

http://www.iosart.com

2 个答案:

答案 0 :(得分:4)

您似乎意外地将输入解码为Windows-1252。

>>> "Óæí Ïæã ÈíåÞí".encode('cp1252').decode('cp1256')
'سوي دوم بيهقي'

答案 1 :(得分:3)

我想补充@josh-lee回答python2的情况。
如果您使用的是python 2,请添加unicode前缀u

>>> u"Óæí Ïæã ÈíåÞí".encode('cp1252').decode('cp1256')
u'\u0633\u0648\u064a \u062f\u0648\u0645 \u0628\u064a\u0647\u0642\u064a'
>>> print _
سوي دوم بيهقي