acentos y caracteres especiales
Salvador Ortiz Garcia
sog@msg.com.mx
Wed, 6 May 1998 23:21:16 -0500 (CDT)
On Thu, 7 May 1998, Manuel Pérez López wrote:
> >>Hola listeros:
> >>
> >>Necesitaría ayuda, porque soy muy novato en esto del Perl (acabo de
> inscribirme). Estoy programando un CGI en Perl y cuando intento
> >>que una información de un formulario en la web me llegue vía correo
> >>electrónico no me llega con los caracteres tildados (con acentos: á
> é
> >>í ñ....). He incluido líneas de código como:
> >>
> >> print MAIL "MIME-Version: 1\.0 \n";
> >> print MAIL "Content-Type: text/plain; charset=iso-8859-1 \n";
> >>
> >>pero, sin embargo, no tienen ningún efecto sobre mi objetivo.
> >¿Alguien
> >>ha programado antes este lenguaje en UNIX y sabe cuál es mi error?
Antes que nada, tu problema no tiene mucho que ver con perl, es
fundamentalmente un problema de cómo funcionan los agentes de correo.
Básicamente el problema es que el estándar que define la transmisión de un
mensaje de correo de una máquina a otra (SMTP) estipula que sólo son
válidos caracteres ASCII (7 bits).
La solución general (no sólo acentos) al problema del envío de datos
arbitrarios por correo es MIME, pero no basta con un encabezado
"MIME-Version: 1.0\nContent-Type: ...", etc., se requiere que _todo_ el
mensaje esté codificado de cierta manera.
Por ejemplo, tu nombre que yo veo como:
'From: Manuel Pérez López <mapelo@writeme.com>'
en los encabezados del mensaje viene codificado así:
'From: "=?iso-8859-1?B?TWFudWVsIFDpcmV6IEzzcGV6?=" <mapelo@writeme.com>'
La diferencia es notoria. ;-)
Y para que no te compliques la vida implementando un MIME completo,
en perl puedes usar el módulo 'MIME-tools' que encuentras en CPAN.
<http://www.perl.com/CPAN/>
Otra opción (si el único que recibe los mensajes eres tu) es que tu mismo
codifiques el mensaje al enviarlo y lo decodifiques al recibirlo (en perl
por supuesto.)
Saludos.
Salvador Ortiz.