Página de tag(s):

Tags relacionados: No Tags

La codificación de caracteres en Python

Cuando escribimos un script en Python y éste contiene cadenas de caracteres que no están escritas en inglés, es posible que éstas contengan caracteres que no se encuentran entre los definidos por el ASCII. En este caso, si no se le dice a Python cómo debe tratarlas, éste se queja.

Tomemos, por ejemplo, este script que tan sólo muestra en pantalla una cadena de texto:

PYTHON:
  1. #!/usr/bin/env python
  2.  
  3. # Las tildes no están a salvo en los comentarios
  4. print "Las tildes no están a salvo en las cadenas de texto"

Si ejecutamos este script tal como está ahora, tendremos una desagradable sorpresa:

jake@aurora /tmp $ chmod u+x encoding.py
jake@aurora /tmp $ ./encoding.py
sys:1: DeprecationWarning: Non-ASCII character '\xc3' in file ./encoding.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Las tildes no están a salvo en las cadenas de texto

La URL que devuelve el intérprete corresponde a una propuesta de extensión de Python (PEP), aceptada hace tiempo, que indica cómo especificar la codificación de caracteres no ASCII.

Básicamente, lo que dice es que Python interpreta todo como ASCII a menos que se le indique lo contrario con un comentario especial que tiene que estar en la primera o la segunda línea y debe casar con la expresión regular: coding[:=]\s*([-\w.]+). Esto significa que si usas Vim o emacs para editar el código python puedes utilizar la sintaxis propia de cada uno para indicarle al editor la codificación del archivo y así matar dos pájaros de un tiro. Además, como bien dice el artículo, se puede usar incluso el lenguaje natural; podría escribir:

PYTHON:
  1. #!/usr/bin/env python
  2. # Este archivo usa el encoding: utf-8
  3.  
  4. # Las tildes no están a salvo en los comentarios
  5. print "Las tildes no están a salvo en las cadenas de texto"

Aunque yo prefiero usar la sintaxis de Vim, que es, dicho sea de paso, mi editor favorito ;)

PYTHON:
  1. #!/usr/bin/env python
  2. # vim: set fileencoding=utf-8 :
  3.  
  4. # Las tildes no están a salvo en los comentarios
  5. print "Las tildes no están a salvo en las cadenas de texto"

Y si ejecutamos esta nueva versión vemos que ahora no hay quejas:

jake@aurora /tmp $ ./encoding.py
Las tildes no están a salvo en las cadenas de texto

Buscar

Posts recientes

  1. Structs, tipos y listas enlazadas
  2. Opciones en las direcciones de Gmail
  3. Python en Windows sin ventana de DOS
  4. Problemas al compilar blas-atlas en Gentoo
  5. La codificación de caracteres en Python
  6. Comprobaciones de particiones en el arranque
  7. Cuidado con Ubuntu en los portátiles Dell
  8. Escoger el orden de tarjetas de sonido con Alsa en Ubuntu
  9. Actualización de Ubuntu: de Dapper a Edgy
  10. ¡Hola mundo!


Licencia de contenidos

Todo el contenido original creado por Jacobo de Vera y que aparece en este sitio web se encuentra, si no se indica lo contrario, protegido por una licencia de Creative Commons.

DreamHost promo

DreamHost

Esta web está alojada en uno de los servidores de DreamHost.

Si buscas alojamiento para tu web quizá te interesen sus precios.

Si te decides y quieres obtener un descuento de 45.00$ en cualquiera de los planes anuales o bienales introduce este código de promoción en el formulario de alta:

JOV042