Quando si esegue il pipe dell'output di un programma Python, l'interprete Python si confonde sulla codifica e lo imposta su None. Questo significa un programma come questo:
# -*- coding: utf-8 -*- print u"åäö"
funzionerà correttamente se eseguito normalmente, ma fallisce con:
UnicodeEncodeError: il codec "ascii" non può codificare il carattere u"xa0" in posizione 0: ordinale non compreso nell'intervallo(128)
quando utilizzato in una sequenza di pipe.
Qual è il modo migliore per farlo funzionare durante il piping? Posso semplicemente dirgli di usare qualsiasi codifica della shell/filesystem/qualunque cosa sia usando?
I suggerimenti che ho visto finora sono di modificare direttamente il tuo site.py o di codificare la codifica predefinita usando questo hack:
# -*- coding: utf -8 -*- import sys reload(sys) sys.setdefaultencoding("utf-8") print u"åäö"
C'è un modo migliore per creare piping lavoro?