Re: [Python-es] Error de codificación de texto en C GI

Chema Cortes <[email protected]>
Newsgroups gmane.comp.python.general.castellano
Message-ID <[email protected]>
El día 20 de octubre de 2009 17:29, Oswaldo Hernández
<[email protected]> escribió:

> Con unicode, string, o secuencia de bytes, al final lo que recibe el apache
> es una cadena de bytes y este la interpreta según el encode especificado en
> la cabecera.

En realidad, apache se limita a ejecutar el script y a enviar el
resultado al cliente. La cabecera HTTP es tan sólo parte del protocolo
de conexión con el cliente, y la etiqueta META sólo es parte del
mensaje que interpretará el navegador.

La problemática está en que, por estar capturada la salida estándar
(stdout) del script por apache, python piensa que el dispositivo de
salida emplea la codificación genérica "ascii" y de ahí que falle el
script al convertir cadenas unicode a "stream" de bytes. Hace falta
conseguir que la salida estándar emplee la codificación "utf8" para lo
que, o bien se emplea la solución con el módulo 'codecs' que puso
Sergio, o bien se emplea, si es posible, la variable de entorno
PYTHONIOENCODING.

Según la documentación, cambiar la variables de entorno (diccionario
os.environment, "putenv" en C) desde un script python puede producir
fallas en MacOS (no hay que olvidar que la cuestión original trata de
python3 y macos), entonces creo que la única solución pasa por usar el
módulo 'codecs' si se quiere hacer bien. Por supuesto, si tenemos
control del sistema aún podríamos añadir la variable de entorno en la
configuración global del sistema o, incluso mejor, insertarla en la
misma configuración de apache (directiva "SetEnv"). ((Ésto no lo he
probado aún. Si alguien lo prueba que haga favor de decir si
funciona))


> En el ejemplo que ponia antes tambien funciona si en vez de un str envio un
> buffer o un array con el contenido del texto:

Insisto en que estamos hablando de python3; las cosas han cambiado un poco.
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.