Foros del Web » Programando para Internet » PHP »

Ayuda con caracteres latinos en en formulario UTF-8

Estas en el tema de Ayuda con caracteres latinos en en formulario UTF-8 en el foro de PHP en Foros del Web. Me vuelve loco... descargué un formulario mail que se adaptaba a mis necesidades pero he tenido problemas. No conozco mucho de PHP se que debe ...
  #1 (permalink)  
Antiguo 06/12/2007, 16:11
 
Fecha de Ingreso: diciembre-2007
Mensajes: 7
Antigüedad: 16 años, 4 meses
Puntos: 0
Ayuda con caracteres latinos en en formulario UTF-8

Me vuelve loco... descargué un formulario mail que se adaptaba a mis necesidades pero he tenido problemas. No conozco mucho de PHP se que debe ser algo de la codificación por que una vez me pasó y lo resolví pasando el php con html, según lo que recuerdo con estas líneas de código:

$headers = "MIME-Version: 1.0
";
$headers .= "Content-type: text/html; charset=utf-8
";

Bueno acá está el asunto completo para que le echen una mirada:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

ETc....


En el PHP:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>

<?php
$headers = "MIME-Version: 1.0
";
$headers .= "Content-type: text/html; charset=utf-8
";
$EmailFrom = "[email protected]";
$EmailTo = "[email protected]";
$Subject = "Contacto desde ...";
$Name = Trim(stripslashes($_POST['Name']));
$Tel = Trim(stripslashes($_POST['Tel']));
$Email = Trim(stripslashes($_POST['Email']));
$Message = Trim(stripslashes($_POST['Message']));

// validation
$validationOK=true;
if (!$validationOK) {
print "<meta http-equiv="refresh" content="0;URL=error.htm">";
exit;
}

// prepare email body text
$Body = "";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "
";
$Body .= "Tel: ";
$Body .= $Tel;
$Body .= "
";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "
";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "
";

// send email
$success = mail($EmailTo, $Subject, $Body,"From: <$EmailFrom>");

// redirect to success page
if ($success){
print "<meta http-equiv="refresh" content="0;URL=contactthanks.php">";
}
else{
print "<meta http-equiv="refresh" content="0;URL=error.htm">";
}

?>

Cuando me llega el mensaje al mail, lo caracteres latinos llegan extraños, por ejemplo el acento llega así :

é

De antemano, gracias por la ayuda.
  #2 (permalink)  
Antiguo 06/12/2007, 17:15
 
Fecha de Ingreso: septiembre-2007
Mensajes: 220
Antigüedad: 16 años, 6 meses
Puntos: 1
Re: Ayuda con caracteres latinos en en formulario UTF-8

Puedes usar mejor la clase phpmailer para trabajar con emails, seguro que te ahorras problemas.
  #3 (permalink)  
Antiguo 06/12/2007, 19:39
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
Re: Ayuda con caracteres latinos en en formulario UTF-8

Podría ser que el formulario está enviando los datos como UTF-8 y el script PHP que los procesa los esté enviando como iso-8859-1, y esa conversión sea la que esté dando problemas. Se me ocurren dos posibles soluciones:

A) El archivo PHP que procesa los datos y envía el mail guárdalo como UTF-8.

B) Convierte el mensaje del mail a utf-8 aplicando la función utf8_encode() a la variable $Body
__________________
El conocimiento es libre: Movimiento por la Devolución
  #4 (permalink)  
Antiguo 06/12/2007, 19:50
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Ayuda con caracteres latinos en en formulario UTF-8

Lo que dice el compañero es correcto.
pero antes prueba borrando todas las líneas de html que digan UTF-8
y revisa.

saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:14.