PDA

Ver la Versión Completa : tildes caprichosos


elcigarra
30-09-2006, 04:52:14
Tengo un formulario de consulta en una página. Este formulario contiene entre otras cosas un Textarea donde el señor que visita mi página pone el texto que quiere.

El formulario está dirigido a otra página php donde luego de verificar algunas cosas, toma el texto del mensaje escrito en el textarea (capturado con $_Post[...]), lo pone en una variable
$mensaje = $_Post["msg"]
y ésta la envia por email utilizando la función "mail" de php.

Cuando recibo el mail que debería decir:
Somos un matrimonio con dos niños de 3 y 6 años y viajaremos los últimos días de noviembre.

dice:
Somos un matrimonio con dos niños de 3 y 6 años y viajaremos los ùltimos días de noviembre

Qué tratamiento puede hacérsele a la variable $mensaje antes de mandar el mail para que éste llegue con los caracteres que corresponda?

elcigarra
30-09-2006, 04:53:52
perdón pero no dije que el mail se envía como texto plano (es decir: deseo que continúe así)

D-MO
30-09-2006, 05:48:05
Hola, intenta pasando la variable por la función htmlspecialchars_decode() de php:

$mensaje = htmlspecialchars_decode($_Post["msg"]);


Saludos.

dec
30-09-2006, 08:18:10
Hola,

A mí me parece que el asunto puede estar en la codificación del correo en cuestión. Por ejemplo, yo utilizo la siguiente función para enviar correo:


function Enviar($correoDestino,$correoRemite,$asunto,$cuerpo,$cabeceras='')
{
if(trim($cabeceras) == '')
{
$cabeceras = "MIME-Version: 1.0\n".
"From: $correoRemite\n".
"Content-Type: text/plain; charset=\"utf-8\"";
}
return mail($correoDestino, $asunto, $cuerpo, $cabeceras);
}


Funciona bien, pero, si el cliente de correo no "reconoce" ni es capaz de tratar, por tanto, la codificación de caracteres "UTF-8", pues ya está el lío con los acentos, por poner un ejemplo de caracteres "conflictivos".

¿Probaste si ocurre lo mismo recibiendo el correo en otro cliente distinto del que usas? Por poner un ejemplo, prueba a enviar un correo a alguna cuenta en GMail, puesto que ahí se trata como se debe los correos codificados con "UTF-8"... claro, que, no sé si es esta la codificación que usas... o si hay alguna "por defecto"...

Por otro lado, podrías probar a indicar en la cabecera del correo (tal como yo hago en la función de más arriba) otra codificación de caracteres... "ISO-8815", se me ocurre, para ver si de ese modo el asunto va como esperas.

elcigarra
30-09-2006, 21:04:28
En realidad el correo del destinatario se obtiene automáticamente de una base de datos (ya que el usuario elige un destinatario en el formulario y ahí manda su consulta) es decir que puede ser cualquiera. Lo que yo me tengo que asegurar es que siempre funciona bien...

VoOy a probar lo de los encabezados, luego te cuento. Desde ya te digo que lo del htmlspecialchars_decode me da un error como que no existe la función. La htmlspecialchars sí, pero no la de decodificar no sé por qué. Incluso la copié y la pegué del manual online para no equivocarme pero ni así funciona.

elcigarra
30-09-2006, 21:10:09
Nop...
Con ese charset si el usuario escribe:
"Los últimos ñatos" en el textarea, el mail se envía como:

"Los últimos ñatos":)

roman
30-09-2006, 22:18:27
Además de las cabeceras en el envío del correo como menciona dec, supongo que es también necesario que el juego de caracteres esté correctamente especificado en la página web que contiene el TextArea.


<head>
<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1'>
...
</head>


// Saludos

elcigarra
30-09-2006, 23:06:59
Al fin!!!
Gracias a ambos