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
結婚

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s