私は 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:」行で指定されたコーディングは、コンソール出力ではなく、ソース コードのコーディングです。しかし、あなたの考えをありがとう!