ホームページ > バックエンド開発 > Python チュートリアル > Python 3.3 で Web ページの応答を印刷するときに発生する UnicodeEncodeError を解決するにはどうすればよいですか?

Python 3.3 で Web ページの応答を印刷するときに発生する UnicodeEncodeError を解決するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-25 15:06:10
オリジナル
719 人が閲覧しました

How Can I Solve UnicodeEncodeError When Printing Webpage Responses in Python 3.3?

「charmap」コーデックによる Unicode エンコード エラー

Python 3.3 の POST メソッド経由でアクセスされた Web ページからの応答を印刷しようとすると、 Windows コンソールで UnicodeEncodeError が発生する可能性があります。これは、コンソールのデフォルト コード ページ CP-850 が、em-dash (U 2014) などの特定の Unicode 文字をサポートしていないために発生します。

堅牢なエンコーディングのためのソリューション

このエラーを防止し、出力インターフェイスのエンコーディングに関係なく堅牢なエンコーディングを保証するには、次の点を考慮してください。解決策:

  1. 出力エンコーディングの変更: 一貫して UTF-8 を出力するようにエンコーディング設定を変更します。 「Python で標準出力をパイプする際の正しいエンコーディングの設定」などのリソースを参照してください。
  2. ターゲットの文字セットの認識: ターゲットの文字セットに基づいて出力をエンコードするカスタム印刷関数を利用します。これにより、必要に応じて印刷をカスタム関数にシームレスに置き換えることができます。
  3. グローバル エンコーディング リセット: プログラムの開始時に出力エンコーディングをグローバルにリセットします。これにより、デフォルトのコンソール設定に関係なく、後続の出力が正しくエンコードされるようになります。 Python 2 および Python 3 については、以下のコード スニペットを参照してください。

    Python 2:

    if sys.stdout.encoding != 'cp850':
        sys.stdout = codecs.getwriter('cp850')(sys.stdout, 'strict')
    if sys.stderr.encoding != 'cp850':
        sys.stderr = codecs.getwriter('cp850')(sys.stderr, 'strict')
    ログイン後にコピー

    Python 3:

    if sys.stdout.encoding != 'cp850':
        sys.stdout = codecs.getwriter('cp850')(sys.stdout.buffer, 'strict')
    if sys.stderr.encoding != 'cp850':
        sys.stderr = codecs.getwriter('cp850')(sys.stderr.buffer, 'strict')
    ログイン後にコピー

これらを採用することでこれらの戦略を使用すると、Unicode エンコード エラーを効果的に防止し、コードの堅牢性を維持し、さまざまな出力エンコード シナリオに適応できるようにすることができます。

以上がPython 3.3 で Web ページの応答を印刷するときに発生する UnicodeEncodeError を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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