0

Python で (Windows 7 で Python(x,y) を使用して) 印刷したいアラビア語の Unicode 文字列がありますが、印刷することができず、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 (Latin 1) を表示するように構成されていますが、実際にはコードポイントを処理できません。文字を表示できる別のコードページにコンソールを切り替えます。

1256 に切り替えることができます。

chcp 1256

または、65001 (UTF-8 コードページ) に切り替えます。これにより、任意のUnicode コードポイントを処理できるはずです。ただし、コンソールで使用するフォントを切り替える必要がある場合があります。Lucida Sans は、ほとんどの Unicode を表示すると報告されています。

于 2013-03-01T16:36:12.640 に答える