ホームページ > バックエンド開発 > Python チュートリアル > Python で出力をパイプするときにエンコーディングを維持するにはどうすればよいですか?

Python で出力をパイプするときにエンコーディングを維持するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-03 06:17:09
オリジナル
674 人が閲覧しました

How Can I Preserve Encoding When Piping Output in Python?

Python で出力をパイプするときにエンコーディングを保持する

Python プログラムの標準出力をパイプ経由でリダイレクトする場合、インタープリタは、 None のエンコードにより、Unicode エンコード エラーが発生します。この問題を解決するには、エンコーディングを明示的に指定することが不可欠です。

Python が端末のエンコーディングに自動的に調整するスクリプトでの実行とは異なり、パイプ処理では手動エンコーディングが必要です。一般的な方法は、'utf-8' を使用して出力をエンコードすることです:

# -*- coding: utf-8 -*-
print(u"åäö".encode('utf-8'))
ログイン後にコピー

これにより、ターゲット プログラムのエンコードに関係なく、パイプされた出力が Unicode 表現と一貫していることが保証されます。

複数のエンコードを伴う複雑なシナリオでは、次の原則に従うことをお勧めします:

  • 期待されるものを使用して入力をデコードするエンコード
  • 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート