1. ホーム
  2. python

[解決済み] Python、Unicode、そしてWindowsコンソール

2022-04-24 18:27:30

質問

Windows コンソールで Unicode 文字列を印刷しようとすると、エラーが発生します。

UnicodeEncodeError: 'charmap' codec can't encode character ....

これは、Windowsのコンソールがユニコードのみの文字を受け付けないためだと推測されます。これを回避する最善の方法は何でしょうか? Pythonが自動的に ? このような場合、失敗する代わりに?

編集してください。 Python 2.5を使用しています。


LasseV.Karlsenのチェックマーク付きの回答は、2008年のもので、ちょっと古いです。以下の解決策/回答/提案を注意して使用してください!

JFSebastianの回答 の方が本日(2016年1月6日)時点では適切です。

どのように解決するのですか?

注意事項 この回答はちょっと古いです(2008年のもの)。以下の解決策を注意して使用してください!


問題と解決策を詳しく説明したページはこちらです(ページ内をテキスト検索してください sys.stdoutをインスタンスにラッピングする ):

PrintFails - Python Wiki

以下は、そのページからのコードの抜粋です。

$ python -c 'import sys, codecs, locale; print sys.stdout.encoding; \
    sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout); \
    line = u"\u0411\n"; print type(line), len(line); \
    sys.stdout.write(line); print line'
  UTF-8
  <type 'unicode'> 2
  Б
  Б

  $ python -c 'import sys, codecs, locale; print sys.stdout.encoding; \
    sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout); \
    line = u"\u0411\n"; print type(line), len(line); \
    sys.stdout.write(line); print line' | cat
  None
  <type 'unicode'> 2
  Б
  Б

このページにはさらに詳しい情報が掲載されているので、一読の価値ありです。