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