Cuando ingresa "我"
, el intérprete de Python obtiene del terminal una representación de ese carácter en su juego de caracteres local, que almacena en una cadena byte por byte debido al ""
. En mi sistema UTF-8, eso es . En el tuyo, es '\xce\xd2'
porque usas GB2312. Eso explica el valor de su variable a
.
Al entrar en u"我"
, el intérprete de Python no sabe lo que codifica el carácter 我
es en lo que hace es más o menos la misma que para una cadena ordinaria:. Almacena los bytes del carácter de una cadena Unicode, interpretando cada byte como un punto de código Unicode, de ahí el resultado equivocado u'\xce\xd2'
(o, en mi caja, u'\xe6\x88\x91'
).
Este problema solo existe en el intérprete interactivo. Cuando escribe scripts o módulos de Python, puede specify the encoding cerca de la parte superior y las cadenas Unicode saldrán bien. Por ejemplo, en mi sistema, el siguiente imprime la palabra liberté dos veces:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print(u"liberté")
print("liberté")
¿Qué terminal está utilizando? No puedo reproducir los resultados en mi Unicode gnome-terminal ('c === u '\ u6211'') –
@ChrisMorgan Probar estos códigos en IDLE. –
también puede reproducir esto con IDLE –