Tengo algunas palabras en japonés que deseo convertir a utf-8, como se muestra a continuación:
jap_word1 = u'中山' jap_word2 = u'小倉' print jap_word1.encode('utf-8') # Doesn't work print jap_word2.encode('utf-8') # Prints properly
¿Por qué es que una palabra se puede convertir correctamente a utf-8 e imprimirse para mostrar los mismos caracteres pero no el otro?
(Estoy usando Python 2.6 en Windows 7 Ultimate)
Muchas cosas deben alinearse para imprimir los caracteres correctamente:
# coding: xxxx
en su script, donde xxxx coincide con la encoding en la que se guardó el archivo? import sys; print sys.stdout.encoding
import sys; print sys.stdout.encoding
a. Si no es así, ¿puedes cambiar la encoding de la consola? (comando chcp
en Windows) Al guardar el script en UTF-8, esto funciona tanto en PythonWin como en IDLE.
# coding: utf-8 jap_word1 = u'中山' jap_word2 = u'小倉' print jap_word1 print jap_word2
Curiosamente, obtuve sus resultados con el .encode('utf-8')
agregado a ambas impresiones en IDLE, pero funcionó correctamente en Pythonwin, cuya ventana de salida predeterminada admite UTF-8.
Inactivo es una bestia extraña. sys.stdout.encoding
en mi sistema produce 'cp1252'
, que no admite caracteres asiáticos, pero imprime la primera palabra incorrecta y la segunda a la derecha cuando se imprime en UTF-8.
Porque tu consola no está en UTF-8. Ejecute chcp 65001
antes de ejecutar.