私は WinXP 5.1.2600 で作業しており、中国語のピンインを含む Python アプリケーションを書いています。Python 3.0 に切り替えることで、それらの多くが解決されました。しかし、コンソール出力の print() 関数は、奇妙な理由で Unicode 対応ではありません。ここに小さなプログラムがあります。
print('sys.stdout encoding is "' + sys.stdout.encoding + '"')
str1 = 'lüelā'
print(str1)
出力は次のとおりです(読みやすくするために山括弧を角括弧に変更しています):
sys.stdout エンコーディングは「cp1252」です
トレースバック (最新の呼び出しが最後):
[モジュール] のファイル「TestPrintEncoding.py」、22 行目
印刷 (str1)
ファイル「C:\Python30\lib\io.py」、1491行目、書き込み中
b = エンコーダー.エンコード
ファイル「C:\Python30\lib\encodings\cp1252.py」、19 行目、エンコード
戻り codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' コーデックは文字 '\u0101' をエンコードできません
4 番目の位置: 文字は [undefined] にマップされます
ü = \xfc = 252 は上位 ASCII であるため問題ありません。しかし、ā = \u0101 は 8 ビットを超えています。
sys.stdout のエンコーディングを「utf-8」に変更する方法を知っている人はいますか? codecsドキュメントを正しく理解していれば、Python 3.0 はこのモジュールを使用しなくなったことに注意してください。
申し訳ありませんが、前文なしでプログラムを提供しました。与えられた 3 行の前は、次のように始まります。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
残念ながら、「coding:」行で指定されたコーディングは、コンソール出力ではなく、ソース コードのコーディングです。しかし、あなたの考えをありがとう!