Tutorial IT blog»Archivo del blog » Como usar UTF-8 con Python

Como usar UTF-8 con Python



Hay dos tipos de string en Python: byte y Unicode. El string de tipo byte es una secuencia de bytes. Cuando hace falta Python usa el locale de la computadora para convertir los bytes en caracteres. En el sistema operativo Mac OS X, el locale por default es UTF-8, pero en el resto probablemente sea ASCII.

Esto crea un string de tipo byte:

byteString = “Hola! (en mi locale por default)”

y esto crea un string Unicode:

unicodeString = u”Hola mundo unicode!”

Como convertir un byte string a Unicode y viceversa:

s = “hola byte string”
u = unicode( s )
backToBytes = u.encode()

Este código usa el conjunto de caracteres por defecto para realizar las conversiones.
Sin embargo confiar en el locale no es una muy buena idea, ya que la aplicación no funciona si se conecta alguien de Japon desde su maquina local.
Lo mejor es hacer explicito el encoding del string:

s = “hola normal string”
u = unicode( s, “utf-8″ )
backToBytes = u.encode( “utf-8″ )

Ahora el byte string s será tratado como una secuencia de bytes UTF-8 bytes para crear el string unicode u.

Hasta la próxima

Etiquetas: , , , , , , , ,

2 comentarios para “Como usar UTF-8 con Python”

  1. Joshua dice:

    Hola!

    Necesito escribir en un archivo de texto plano un string que contien las palabras “año” y “día”, pero python me tira el error de “Non-ASCII character ‘\xf1′ in file”. He probado con las cosas de trasformarlo a UTF-8 y sigue tirando el mismo error.

    Pueden sugerirme algo? Gracias.

    Saludos,

  2. admin dice:

    coloca lo sgte al comienzo del archivo:

    #! /usr/bin/python
    # -*- coding: utf-8 -*-

    Saludos