Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   tildes caprichosos (https://www.clubdelphi.com/foros/showthread.php?t=36052)

elcigarra 30-09-2006 04:52:14

tildes caprichosos
 
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
Código:

$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:
Código 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:

Código PHP:

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.

Código:

<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


La franja horaria es GMT +2. Ahora son las 06:42:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi