Python で出力をパイプするときにエンコーディングを保持する
Python プログラムの標準出力をパイプ経由でリダイレクトする場合、インタープリタは、 None のエンコードにより、Unicode エンコード エラーが発生します。この問題を解決するには、エンコーディングを明示的に指定することが不可欠です。
Python が端末のエンコーディングに自動的に調整するスクリプトでの実行とは異なり、パイプ処理では手動エンコーディングが必要です。一般的な方法は、'utf-8' を使用して出力をエンコードすることです:
# -*- coding: utf-8 -*- print(u"åäö".encode('utf-8'))
これにより、ターゲット プログラムのエンコードに関係なく、パイプされた出力が Unicode 表現と一貫していることが保証されます。
複数のエンコードを伴う複雑なシナリオでは、次の原則に従うことをお勧めします:
このアプローチにより、シームレスなデータ操作が可能になり、エンコード関連のエラーが回避されます。
ISO-8859-1 と UTF-8 の間で大文字変換を適用して変換する Python プログラムの例を考えてみましょう。プロセス:
import sys for line in sys.stdin: line = line.decode('iso8859-1') line = line.upper() line = line.encode('utf-8') sys.stdout.write(line)
この場合、入力は ISO-8859-1 からデコードされ、Unicode として処理され、出力前に UTF-8 にエンコードされます。
システムの設定デフォルトのエンコーディングをグローバルに使用することは、ASCII エンコーディングを前提とするモジュールやライブラリに干渉する可能性があるため、推奨されません。
以上がPython で出力をパイプするときにエンコーディングを維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。