Comenzaré diciendo que ya he visto esta publicación: Strange python print behavior with unicode, pero la solución ofrecida allí (usando PYTHONIOENCODING) no funcionó para mí.python Unicode manejando las diferencias entre print y sys.stdout.write
aquí está mi problema:
Python 2.6.5 (r265:79063, Apr 9 2010, 11:16:46)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
>>> a = u'\xa6'
>>> print a
¦
funciona bien, sin embargo:
>>> sys.stdout.write(a)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa6' in position 0: ordinal not in range(128)
genera un error. La publicación a la que me he vinculado en la parte superior sugiere que esto se debe a que la codificación predeterminada de la consola es 'ascii'. Sin embargo, en mi caso no es:
>>> sys.stdout.encoding
'UTF-8'
¿Alguna idea de qué se está trabajando aquí y cómo solucionar este problema?
Gracias D.
En pitón 2.7 con codificación de terminal utf-8, todo parece estar funcionando. ¿Puedes probar sys.stdout.write (a.encode ("UTF-8")) y tratar de ver qué pasa? – yasar
Sí, funcionó ... Vaya, me acabo de dar cuenta de que utilicé una versión de Python incorrecta para generar la muestra. Debería haber usado 2.6.5. Entonces, ¿por qué está sucediendo esto? ¿Un error en pre 2.7 Python? –
Aparentemente, al intentar escribir en stdout, Python intenta codificar su objeto unicode con ascii, pero falla miserablemente. No estoy seguro de por qué, pero el mío no lo hace :) – yasar