2013-03-01 87 views
0

我有一个阿拉伯语unicode字符串,我想用Python打印(在Windows 7上使用Python(x,y)),但无法打印它,只有unicode表示被打印出来。在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上打印unicode的Python,但似乎没有任何工作。

任何想法?

谢谢。

更新: 我正在使用Spyder IDE(捆绑在Windows 7上的Python(x,y))。

UPDATE2: 我已经尝试过在“重复”的问题一一解决,但没有奏效。

+0

@ecatmur我试着在那个页面上的解决方案,并没有工作 – 2013-03-01 16:46:08

+0

检查[this](http://stackoverflow.com/q/39528462/5284370)了。 – Soorena 2016-09-18 13:20:33

回答

1

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

你可以切换到1256:

chcp 1256 

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

+0

切换到chcp 1256没有解决问题,仍然得到不可读/错误的字符。切换到65001在Python解释器中给出错误: LookupError:未知编码:cp65001 – 2013-03-01 16:43:30

+0

@malaa:你使用什么python版本? – 2013-03-01 16:48:30

+0

@malaa:请参阅[Windows cmd编码更改导致Python崩溃](http://stackoverflow.com/questions/878972/3259271) – 2013-03-01 16:49:36