Usted puede hacer esto por no depender de la codificación implícita al imprimir cosas. No confiar en eso es una buena idea en cualquier caso: la codificación implícita solo se usa cuando se imprime en stdout y cuando stdout está conectada a un terminal.
Un mejor enfoque es utilizar unicode
en todas partes, y usar codecs.open
o codecs.getwriter
en todas partes. Se envuelve sys.stdout
en un objeto que codifica automáticamente sus cadenas Unicode en UTF-8, utilizando, por ejemplo:
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
Esto sólo funcionará si se utiliza Unicode en todas partes, sin embargo. Por lo tanto, use unicode en todas partes. Realmente, en todas partes.
¿Qué pasa con stdin? – duduklein
stdin no se decodifica automáticamente, por lo que siempre debe hacerlo usted mismo. Y suponiendo que la entrada sea UTF-8 es probablemente una mala idea, pero hay 'codecs.getreader ('utf-8') (sys.stdin)' si realmente quieres. –
Tenga en cuenta que, a diferencia de Python 2, Python 3 decodifica automáticamente stdin: http://docs.python.org/3/library/sys.html#sys.stdin; este comportamiento puede modificarse como se indica en los documentos. –