Al canalizar la salida de un programa de Python, el intérprete de Python se confunde acerca de la codificación y lo establece en Ninguno. Esto significa un programa como este:
# -*- codificación: utf-8 -*- print u"√•√§√∂"
funcionará bien cuando se ejecute normalmente, pero fallará con:
UnicodeEncodeError: el códec "ascii" no puede codificar el carácter u"xa0" en la posición 0: ordinal no está en el rango (128)
cuando se usa en una secuencia de tubería.
¿Cuál es la mejor manera de hacer que esto funcione cuando se canaliza? ¿Puedo decirle que use cualquier codificación del shell/sistema de archivos/lo que sea? usando?
Las sugerencias que he visto hasta ahora son modificar su site.py directamente, o codificar la codificación predeterminada usando este truco:
# -*- codificación: utf -8 -*- import sys reload(sys) sys.setdefaultencoding("utf-8") print u"√•√§√∂"
¿Hay alguna forma mejor de hacer tuberías? trabajo?