0

我有一个阿拉伯语 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: 我已经尝试了“重复”问题中的所有解决方案,但没有一个有效。

4

1 回答 1

1

您的控制台配置为显示代码页 1252(拉丁语 1),它确实无法处理您的代码点。将您的控制台切换到可以显示字符的不同代码页。

您可以切换到 1256:

chcp 1256

或切换到 65001(UTF-8 代码页),它应该能够处理任何unicode 代码点。不过,您可能必须切换控制台使用的字体;据报道,Lucida Sans 显示大部分 Unicode。

于 2013-03-01T16:36:12.640 回答