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



我有一个阿拉伯语unicode字符串,我想在Python中打印(在Windows 7上使用Python(x,y)),但我无法让它打印,只打印出unicode表示形式。

字符串定义为:

ss = u'u0647u0630u0627 u0647u0648 u0627u0644u062du0644 u0627u0644u0648u062du064au062f u0644u0644u0645u0634u0643u0644u0629 u0627u0644u062au064a u0646u0648u0627u062cu0647u0647u0627'

,看起来应该像这样:"هذاهوالحلالوحيدللمشكلةالتينواجهها"

当我尝试print时,它给出以下错误

print ss
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:Python27libencodingscp1252.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))。

更新2:我已经尝试了"重复"问题中的所有解决方案,但没有一个有效。

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

你可以切换到1256:

chcp 1256

或切换到65001 (UTF-8代码页),它应该能够处理任何 unicode码点。你可能需要改变你的主机使用的字体;据报道,Lucida Sans可以显示大部分Unicode。

相关内容

  • 没有找到相关文章

最新更新