# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Python: Cambiar codificación (encoding) por defecto


Python, por defecto trae una codificación en ascii, lo que probablemente os generará problemas y dolores de cabeza a la hora de utilizar caracteres con tilde o especiales como la “ñ”. El típico error es así:

UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\u2014′ in position 14: ordinal not in range(128)

Podéis comprobar la codificación por defecto de python desde la consola python:

>>> import sys
>>> sys.getdefaultencoding()
'ascii'

Para modificar la codificación, simplemente cread un fichero llamado “sitecustomize.py” dentro de la carpeta “site-packages” de python (por ejemplo en mi instalación está en /usr/lib/python2.4/site-packages, y añadir al fichero el siguiente contenido (dependiendo de la codificación que queráis):

import sys
sys.setdefaultencoding('iso-8859-15')

Categoría: Python | Etiquetas: , , ,

4 Comentarios

  1. vaxter dice:

    La ubicación del directorio “site-packages“ depende del sistema operativo, y la ubicación en la que Python fue instalado. No obstante, las siguientes ubicaciones son las más comunes:
    * En Linux: “/usr/lib/python2.X/site-packages“
    * En Windows: “C:\Python2.X\lib\site-packages“
    * En MacOSX: “/Library/Python2.X/site-packages“

    Lo importante aquí de lo poco que hay que entender es saber que la ruta site-packages es de las rutas que por defecto Python escanea en busca de módulos al inicio.

    En versiones anteriores de Python (hasta la 1.5a3 inclusive), los guiones o módulos que necesitaban utilizar módulos específicos de la instalación debían utilizar “import site” en algún lugar cerca del principio del código. Esto ya no es necesario.

  2. Alex dice:

    Excelente aporte Vaxter. Gracias por ampliar la información de la entrada.

    Saludos!

  3. dracks dice:

    Yo lo que hago és añadir una linea al principio de los fitxeros que pueden dar-me problemas. La linea és:
    # -*- coding: UTF-8 -*-

    Suerte!

Deja una respuesta