6

重複の可能性:
Python、Unicode、および Windows コンソール

ファイルからいくつかの文字列を読み取り、これらの utf-8 文字列を Windows コンソールに出力しようとすると、エラーが発生します

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

「chcp 65001」を使用してコンソールエンコーディングを utf-8 に設定しようとしましたが 、このエラーメッセージが表示されるよりも

LookupError: unknown encoding: cp65001
4

2 に答える 2

3

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

とにかく、次の方法でそれを行うことができます:

  1. 任意のエンコーディング (utf8 など) でファイルから読み取りますが、文字列を Unicode にデコードします
  2. Windows コンソールの場合、Unicode文字列を出力します。この特別なケースでは、エンコードする必要はありません。コンソールのエンコーディングを設定する必要はありません。出力テキストは自動的に正しくエンコードされます。

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

于 2012-04-30T13:57:40.593 に答える
2

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

>>> import sys
>>> sys.stdout.encoding
'cp852'

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

于 2012-04-30T14:28:40.310 に答える