Sobre codificaciones de caracteres

Me topé con el siguiente problema: programar en un idioma extranjero que utiliza caracteres especiales (por ejemplo: el ruso), en este caso utilizaré el lenguaje Python.

Empezando por el típico ejemplo de “Hello word”, debería imprimir en pantalla “привет мир“.

El problema es que no son caracteres ascii, por lo que para ello, se requiere líneas de código especiales.

  • Veamos un ejemplo cuando intentamos imprimir la letra ñ

print “Muestra de ejemplo de ñ”

nos devuelve “Muestra de ejemplo ?

Eso es fácil de resolver agregando en la primera línea código que permita imprimir caracteres ansi

#-*- coding: cp1252 -*-
#-*- coding: utf-8 -*-
print “Muestra de ejemplo ñ”

nos devueve “Muestra de ejemplo ñ

Pero aún no es suficiente para imprimir “привет мир“.

El código que se utiliza es el Unicode, una forma de imprimir en unicode es

print u’\u044f’

Que devuelve la letraя” (minúscula), es decir el caracter unicode 044f. Los caracteres cirílicos mayúsculas en empiezan en el 0410 y terminan en 042f, y en minúsculas empiezan en 0430 y terminan en 044f.

Así, привет мир sería:

print u’\u043f\u0440\u0438\u0432\u0438\u0435\u0442\u00A0\u043c\u0438\u0440′

Dode 00A0 es el espacio. Aunque claro, lo mejor sería utilizar un intérprete que lea caracteres unicode, así sería directamente:

str = “結婚”
print (str)

que devolvería
結婚