Caracteres especiales

Francesc Alted falted en openlc.org
Mie Mayo 14 18:50:22 CEST 2003


Mensaje citado por: Sergio Sanchez Ramirez <sergio en corecanarias.com>:

> Hola a todos,
> 
> 	Cuando en un editor tipo Boa o similares pongo algún carácter
> especial,
> como acentos o similares me sale en el código algo así:
> 
> \xc3\xb3 --> ó

Supongo que lo que pasa es que tu editor empieza a codificarte tus caracteres 
por encima del 127 (i.e. los no-ASCII) en el nuevo formato UTF-8, en lugar del 
tradicional hasta ahora ISO-latin-1. UTF-8 se trata simplemente de una manera 
muy portable de codificar caracteres UNICODE (ver la excelente FAQ 
http://www.cl.cam.ac.uk/~mgk25/unicode.html).

> 
> 	Dónde puedo obtener el listado de estos caracteres o saber como
> deducirlo... parece un código hexadecimal... pero no estoy seguro...
> gracias :)

Supongo que con el soporte de Unicode para Python esto se puede hacer 
fácilmente, aunque no sé cómo exactamente. La receta para hacer esto 'a pelo' la 
 puedes encontrar en: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8.

Por ejemplo, para los caractes por encima del 0x7F hasta el 0x7FF (entre los que 
se encuentran los ISO-latin-1 de toda la vida), se usa la codificación de 2 
bytes siguiente: 110xxxxx 10xxxxxx, donde los diferentes xxxx son los bits del 
caracter que quieres representar, teniendo en cuenta que los de delante son más 
significativos que los de atrás (ordenación big-endian).

Así que el carácter "ó", que en ISO-latin1 es el 0xf3 (ver por ejemplo 
http://www.utoronto.ca/ian/books/xhtml1/entity/isolatin1.html), o, en binario: 
11110011 (si no me equivoco) se representaría como:  11000011 10110011 
(completando con ceros los bits mas significativos), o en hexadecimal 0xc3 0xb3, 
que es el código extraño que estas viendo.
 
Hacer un programa en Python que haga esta conversión no creo que cueste mucho, 
pero estoy casi seguro de que esto ya está implementado dentro del soporte 
UNICODE de Python.

Un saludo,

Francesc Alted




Más información sobre la lista de distribución Python-es