Lors de la transmission de la sortie d'un programme Python, l'interpréteur Python est confus au sujet de l'encodage et le définit sur Aucun. Cela signifie un programme comme celui-ci:
# -*- coding: utf-8 -*-
print u"åäö"
fonctionnera correctement lorsqu'il est exécuté normalement, mais échouera avec:
UnicodeEncodeError: le codec 'ascii' ne peut pas coder le caractère u '\ xa0' en position 0: l'ordinal n'est pas dans la plage (128)
lorsqu'il est utilisé dans une séquence de tuyaux.
Quelle est la meilleure façon de faire fonctionner cela lors de la tuyauterie? Puis-je simplement lui dire d'utiliser l'encodage du shell / système de fichiers / tout ce qui est utilisé?
La suggestion que j'ai vue jusqu'à présent est de modifier directement votre site.py, ou de coder en dur le codage par défaut en utilisant ce hack:
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print u"åäö"
Existe-t-il une meilleure façon de faire fonctionner la tuyauterie?
chcp 65001
avant d'exécuter votre script. Cela peut avoir des problèmes, mais cela aide souvent et ne nécessite pas beaucoup de saisie (moins que set PYTHONIOENCODING=utf_8
).
setx PYTHONENCODING utf-8
de le rendre permanent si vous souhaitez enregistrer la saisie.