我有一个阿拉伯语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(在Windows 7上捆绑了Python(x,y))。
UPDATE2: 我已经尝试过“重复”问题中的所有解决方案,但都没有效果。
答案 0 :(得分:1)
您的控制台配置为显示代码页1252(拉丁语1),它确实无法处理您的代码点。将您的控制台切换到可以显示字符的其他代码页。
您可以切换到1256:
chcp 1256
或切换到65001(UTF-8代码页),它应该能够处理任何 unicode代码点。您可能必须切换用于控制台的字体;据报道Lucida Sans显示大部分Unicode。