2012-04-25 12 views
5

Possible Duplicate:
Python, Unicode, and the Windows consoleのPython:Windowsコンソールに

をいくつかのUTF-8文字列を放ち、私は、ファイルからいくつかの文字列を読んで、私はWindowsコンソールでこれらのUTF-8文字列を印刷しようとすると、私はエラー

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 0: ordinal not in range(128) 

を取得私は「CHCP 65001」 でUTF-8にコンソール・エンコーディングを設定する。しかしよりもしようとした私よりも、このエラーメッセージが表示されます

LookupError: unknown encoding: cp65001 
+6

Python 3.3で修正されました。 –

+1

python 2.7の回避策がありますか? – Meloun

+0

この質問は数回起きています。ここでは、回避策のある例があります:http://stackoverflow.com/questions/5419/python-unicode-and-the-windows-console –

答えて

3

私はstackoverflowで同様の質問を確認することをお勧めします、それらの多くがあります。

とにかく、あなたはそれをこのように行うことができます。Windowsコンソール、出力ユニコード文字列を

  • をUnicodeに(たとえば、UTF8のための)任意のエンコーディングでファイルから

    1. 読み取りますがデコード文字列を。この特殊なケースではエンコードする必要はありません。コンソールエンコーディングを設定する必要はなく、出力テキストは自動的に正しくエンコードされます。

    ファイルの場合、コーデックモジュールを使用するか、適切なエンコードでエンコードする必要があります。

  • +0

    良いアドバイスですが、コンソールで複数の言語をサポートすることを期待している場合は、これは提供されません。 –

    +0

    これは実際にあなたのために働いたのですか?ファイルから最初のバイトを読み取る前でも、私は 'LookupError:unknown encoding:cp65001'を取得します。それは文字列の内容と全く無関係のようです。あたかもPythonが 'cp65001'の理解に欠けているのですが、それでもやってみてください。私が推測しなければ、Python 3.3を使って作業しない限り、これは決してうまくいかないでしょう。 – n611x007

    +1

    @naxaうん、pythonはcp65001を理解していない。少なくとも65001にchcpしないでください。あるいは、少なくともpythonを呼び出す前に 'set PYTHONIOENCODING = utf-8'を使ってください。また、https://stackoverflow.com/questions/878972/windows-cmd-encoding-change-causes-python-crash – Jiri

    1

    printコマンドは、Unicode文字列をコンソールでサポートされているエンコーディングに変換しようとします。試してみてください:

    これは、コンソールがサポートしているエンコーディング(サポートするPythonに伝えられるもの)を示しています。文字をそのエンコーディングに変換できない場合は、正しく表示する方法がありません。