Re: Error de codificación de te xto en CGI

Oswaldo Hernández <[email protected]>
Newsgroups gmane.comp.python.general.castellano
Message-ID <[email protected]>
Chema Cortes escribió:
> El Lunes, 19 de Octubre de 2009 21:49:43 Oswaldo Hernández escribió:
> 
>> Hace tiempo me encontré con el mismo problema en una pequeña aplicación que
>>  hice con el Publisher Handler de mod_python.
>>
>> La solución que utilicé fue convertir las cadenas unicode a utf8 antes de
>>  enviarlas al apache.
>>
>> prueba:
>> 	print("Línea con tilde".encode("utf-8"))
> 
> En python3 ya no vale esta solución. El método .encode() pasa de texto a 
> secuencia de bytes, con lo que print() usará la "representación" para 
> visualizar el objeto (en este caso b'L\xc3\xadnea con tilde' )
> 

No entiendo porque no.

El problema viene porque le esta enviando codificación unicode al apache/mod_python, y como ya se ha 
comentado en otras ocasiones unicode no es utf-8.

El que en python3 se sustituyan los str por secuencias de bytes no veo porque tiene que afectar, ya 
que al fin y al cabo un string es eso, una secuencia de bytes.

Este es un script que utiliza mod_python publisher y funciona perfectamente enviando tanto la cadena 
unicode->utf8 como como la representación de la misma:

#!/usr/bin/env python
#coding=utf-8

from mod_python import apache

def index(req, **kwds):

     req.content_type="text/html; charset=utf-8"
	
     req.write(u"Línea con acento u eñes <br>".encode("utf8"))
     req.write(str(u"Línea con acento u eñes <br>".encode("utf8")))
     req.write("L\xc3\xadnea con acento u e\xc3\xb1es <br>")

     return


El resultado en el navegador es:

Línea con acento y eñes
Línea con acento y eñes
Línea con acento u eñes


No tengo configurado el modo cgi por lo que no puedo hacer pruebas con un script cgi, pero no creo 
que hayan diferencias en este tema.

Saludos,
-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
PD:
Antes de imprimir este mensaje, asegúrese de que es necesario.
El medio ambiente está en nuestra mano.
_______________________________________________
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.