lunes, 9 de febrero de 2015

Cadenas de texto Unicode - II

La función predefinida unicode() da acceso a todos los codecs (CODificadores y DECodificadores). Algunos de los códigos más conocidos que estos codecs pueden convertir son Latin-1, ASCII, UTF-8, y UTF-16. Los dos últimas son códigos de longitud variable que almacenan cada carácter Unicode en uno o más bytes. El código por defecto es normalmente configurado a ASCII, que contiene los caracteres del rango 0-127 y rechaza cualquier otro con un error. Cuando una cadena Unicode se imprime, escribe en un archivo, o se convierte con la función str(), se realiza la conversión utilizando el código por defecto.

>>> u"abc"
u'abc'
>>> str(u"abc")
'abc'
>>> u"äöü"
u'\xe4\xf6\xfc'
>>> str(u"äöü")
...
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)

Para convertir una cadena Unicode en una cadena de 8-bit utilizando un código en particular, los objetos Unicode tienen un método encode() que toma un argumento, el nombre del código. Se prefieren los nombres en minúsculas para los nombres de los códigos.

>>> u"äöü".encode('utf-8')
'\xc3\xa4\xc3\xb6\xc3\xbc'

Si tenés datos en un código en particular y querés producir la cadena Unicode correspondiente, podés
usar la función unicode() con el nombre del código como segundo argumento.

>>> unicode('\xc3\xa4\xc3\xb6\xc3\xbc', 'utf-8')
u'\xe4\xf6\xfc'

No hay comentarios:

Publicar un comentario