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: ascii, byte, encode, locale, mac os x, Python, string, unicode, utf8
21 de Enero de 2009 a las 18:12
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,
22 de Enero de 2009 a las 15:16
coloca lo sgte al comienzo del archivo:
#! /usr/bin/python
# -*- coding: utf-8 -*-
Saludos