我有一个阿拉伯语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。