Comment puis-je résoudre UnicodeEncodeError lors de l'impression des réponses de page Web dans Python 3.3 ?

Patricia Arquette
Libérer: 2024-11-25 15:06:10
original
625 Les gens l'ont consulté

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

Erreur d'encodage Unicode avec le codec 'charmap'

Lors de la tentative d'impression de la réponse à partir d'une page Web accessible via la méthode POST dans Python 3.3, il est possible de rencontrer une UnicodeEncodeError dans la console Windows. Cela se produit car la page de codes par défaut de la console, CP-850, ne prend pas en charge certains caractères Unicode, tels que le tiret cadratin (U 2014).

Solutions pour un codage robuste

Pour éviter cette erreur et garantir un encodage robuste quel que soit l'encodage de l'interface de sortie, tenez compte des points suivants solutions :

  1. Modifier l'encodage de sortie : Modifiez les paramètres d'encodage pour produire une sortie UTF-8 de manière cohérente. Reportez-vous à des ressources telles que « Définition du codage correct lors du raccordement de Stdout en Python ».
  2. Conscience du jeu de caractères cible : Utilisez une fonction d'impression personnalisée qui encode la sortie en fonction du jeu de caractères cible. Cela permet un remplacement transparent de l'impression par la fonction personnalisée si nécessaire.
  3. Réinitialisation globale de l'encodage : Réinitialisez globalement l'encodage de sortie au démarrage du programme. Cela garantit que toute sortie ultérieure sera correctement codée, quels que soient les paramètres par défaut de la console. Pour Python 2 et Python 3, reportez-vous aux extraits de code fournis ci-dessous :

    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')
    Copier après la connexion

    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')
    Copier après la connexion

En employant ces stratégies, vous pouvez prévenir efficacement la Erreur d'encodage Unicode et assurez-vous que votre code reste robuste et adaptable à divers scénarios d'encodage de sortie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal