在Python中打印阿拉伯语Unicode字符串(x,y)
我有一个阿拉伯语的unicode字符串,我想在Python中打印出来(我在Windows 7上使用Python(x,y)),但是我只能看到unicode的表示形式,无法正常打印。
这个字符串是这样定义的:
ss = u'\u0647\u0630\u0627 \u0647\u0648 \u0627\u0644\u062d\u0644 \u0627\u0644\u0648\u062d\u064a\u062f \u0644\u0644\u0645\u0634\u0643\u0644\u0629 \u0627\u0644\u062a\u064a \u0646\u0648\u0627\u062c\u0647\u0647\u0627'
它应该显示成这样:“هذا هو الحل الوحيد للمشكلة التي نواجهها”
当我尝试用print
打印时,出现了以下错误:
print ss
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\encodings\cp1252.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-2: character maps to <undefined>
当我用cp1256编码这个字符串(这是Windows阿拉伯语的编码)时,显示的结果也是错误的:
print ss.encode('cp1256')
åÐÇ åæ ÇáÍá ÇáæÍíÏ ááãÔßáÉ ÇáÊí äæÇÌååÇ
我查看了这里关于在Windows上用Python打印unicode的几个问题,但似乎没有一个能解决我的问题。
有没有什么好的建议呢?
谢谢。
更新:我正在使用Spyder IDE(和Python(x,y)一起在Windows 7上使用)。
更新2:我已经尝试了“重复”问题中的所有解决方案,但都没有成功。
1 个回答
1
你的控制台现在设置为显示1252编码(拉丁1),这个编码确实无法处理你输入的字符。你需要把控制台换成一个可以显示这些字符的编码。
你可以换成1256编码:
chcp 1256
或者换成65001编码(UTF-8编码),这个编码应该可以处理所有的Unicode字符。不过,你可能需要更换控制台使用的字体;据说Lucida Sans字体可以显示大部分Unicode字符。