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

Cesar Ortiz cesar.ortiz en gmail.com
Lun Oct 19 08:54:08 CEST 2009


Estas indicando que el texto del archivo es ut8 y estas metiendo texto que
no lo es. Normal que no se vea. Para poner el acento tal tendrías que ver su
encoding en ut8, o cambia el utf8 por latin1.

El 18 de oct de 2009, 10:29 a.m., "Sergio Martín" <sergiomartinj en gmail.com>
escribió:

Hola.
Estoy intentando hacer una web mediante Python en CGI, utilizo el set de
caracteres UTF-8, toda va bien hasta que meto alguna tilde, pongo un código
de ejemplo:

         #! /usr/local/bin/python3
         # -*- coding: utf_8 -*-

         import cgitb
         cgitb.enable()

         print("Content-Type: text/html; charset=UTF-8")
         print()
         print("Linea sin tilde") # Se ve correctamente
         print("Línea con tilde") # No se ve

Uso python 3.1.1 sobre Mac OS X 10.6.1, el fichero está codificado como
UTF-8, no BOM, y tiene permiso de ejecución.
En el navegador (Safari 4.0.3) solo se ve la primera linea, y si le doy a
"Ver código fuente" sale:

         Linea sin tilde
         <!--: spam
         Content-Type: text/html

         <body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> -->
         <body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> --> -->
         </font> </font> </font> </script> </object> </blockquote> </pre>
         </table> </table> </table> </table> </table> </font> </font>
</font>

El log del Apache me muestra:

         [Sun Oct 18 10:20:54 2009] [error] [client
fe80::217:f2ff:fee7:9901] Error in sys.excepthook:
         [Sun Oct 18 10:20:54 2009] [error] [client
fe80::217:f2ff:fee7:9901] UnicodeEncodeError: 'ascii' codec can't encode
character '\\xed' in position 1601: ordinal not in range(128)
         [Sun Oct 18 10:20:54 2009] [error] [client
fe80::217:f2ff:fee7:9901]
         [Sun Oct 18 10:20:54 2009] [error] [client
fe80::217:f2ff:fee7:9901] Original exception was:
         [Sun Oct 18 10:20:54 2009] [error] [client
fe80::217:f2ff:fee7:9901] Traceback (most recent call last):
         [Sun Oct 18 10:20:54 2009] [error] [client
fe80::217:f2ff:fee7:9901]   File "/Users/sergio/Sites/python/prueba.py",
line 10, in <module>
         [Sun Oct 18 10:20:54 2009] [error] [client
fe80::217:f2ff:fee7:9901]     print("L\\xednea con tilde") # No se ve
         [Sun Oct 18 10:20:54 2009] [error] [client
fe80::217:f2ff:fee7:9901] UnicodeEncodeError: 'ascii' codec can't encode
character '\\xed' in position 1: ordinal not in range(128)

Si ejecuto el script desde la línea de comandos, el resultado es el
correcto, con tildes.
Y sin usar Python, en un fichero html el resultado también es correcto.
¿Alguna sugerencia?
Gracias._______________________________________________
Lista de correo Python-eshttp://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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