在Python(x,y)中打印一个阿拉伯Unicode字符串。

11 浏览
0 Comments

在Python(x,y)中打印一个阿拉伯Unicode字符串。

这个问题已经有了答案:

Python、Unicode和Windows控制台

我有一个阿拉伯文 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 "", line 1, in 
  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 

当我对字符串进行编码,比如使用 cp1256(Windows 阿拉伯文),它会给出错误的表示:

print ss.encode('cp1256')
åÐÇ åæ ÇáÍá ÇáæÍíÏ ááãÔßáÉ ÇáÊí äæÇÌååÇ

我已经查看了几个与在 Windows 上从 Python 打印 Unicode 相关的问题,但似乎没有什么方法能够解决。

有任何想法吗?

谢谢。

更新:

我正在使用 Spyder IDE(与 Python(x,y) 打包在一起的)。

更新2:

我已经尝试了所有“重复”问题中的解决方案,但都没有效果。

admin 更改状态以发布 2023年5月21日
0
0 Comments

您的控制台已配置为显示代码页1252(Latin 1),该代码页确实不能处理您的代码点。将控制台切换到可以显示字符的不同代码页。

您可以切换到1256:

chcp 1256

或者切换到65001(UTF-8代码页),该代码页应该能够处理任何Unicode代码点。但是,您可能需要切换控制台使用的字体;据报道,Lucida Sans可以显示大部分Unicode。

0