Foros del Web » Programando para Internet » PHP »

Problemas con decode y encode UTF

Estas en el tema de Problemas con decode y encode UTF en el foro de PHP en Foros del Web. Hola! Estoy trabajando en una web con bastante envio de emails y gestión de Bases de Datos. En el acceso a la base, tanto para ...
  #1 (permalink)  
Antiguo 16/05/2008, 00:25
 
Fecha de Ingreso: abril-2008
Mensajes: 49
Antigüedad: 16 años
Puntos: 0
Problemas con decode y encode UTF

Hola!

Estoy trabajando en una web con bastante envio de emails y gestión de Bases de Datos. En el acceso a la base, tanto para grabar como para escribir, no tengo ningún problema; me recupera todos los datos perfectamente, tildes, símbolos, etc.

El problema me surge al enviar un email, ya que al recibirlo, no veo todos los carácteres bien. He buscado y creo que la solución es mediante el decode y el encode, pero no hay manera de obtener el resultado esperado.

Me podíes ayudar??? No sé que es lo que estoy haciendo mal.

Os envío copia del código por si os sirve de algo a la hora de detectar mi fallo

Como siempre, gracias por adelantado!!


Código PHP:
    <?php

    
//variables recibidas desde formulario
    
$nombre=$_POST['txt_nombre'];
    
$email_remite=$_POST['txt_email'];
    
$mensaje=$_POST['txt_mensaje'];
    
    
//fecha actual
    
$fechadate('d-m-Y H:i:s');
    
    
$mail_destino="[email protected]";

    
$asunto_consulta="Web Aseiba: Nueva Consulta recibida";
    
$cuerpo_consulta="Hola! \n\n"."Con fecha " $fecha " " $nombre " <" $email_remite "> hace la siguiente consulta: \n\n" $mensaje"\n\nGracias!";
    
    
    
utf8_decode($cuerpo_consulta);
    
utf8_decode($asunto_consulta);
        
    
//envio de email a miembros Aseiba
    
$mail_aseiba=mail($mail_destino,$asunto_consulta,$cuerpo_consulta,"FROM:$email_remite");

    
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Aseiba</title>
</head>
<body>
</body>
  #2 (permalink)  
Antiguo 16/05/2008, 00:54
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: Problemas con decode y encode UTF

Código PHP:
$cuerpo_consulta=utf8_decode($cuerpo_consulta);
    
$asunto_consulta=utf8_decode($asunto_consulta); 
  #3 (permalink)  
Antiguo 16/05/2008, 08:27
Avatar de Squizophrenia  
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona (Spain)
Mensajes: 41
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: Problemas con decode y encode UTF

Como dice Darkj, puedes probar a codificar el contenido de la variable a utf 8 o establecer directamente al enviar el correo el charset apropiado para el contenido:

Código:
<?php 

    //variables recibidas desde formulario

    $nombre = $_POST['txt_nombre']; 
    $email_remite = $_POST['txt_email']; 
    $mensaje = $_POST['txt_mensaje']; 
     
    //fecha actual 

    $fecha= date('d-m-Y H:i:s'); 
    $mail_destino="[email protected]"; 
    $asunto_consulta="Web Aseiba: Nueva Consulta recibida"; 
    $cuerpo_consulta="Hola! \n\n"."Con fecha " . $fecha . " " . $nombre . " <" . $email_remite . "> hace la siguiente consulta: \n\n" . $mensaje. "\n\nGracias!"; 
     
    ///Aquí ponemos y añadimos las cabeceras para el correo

    $headers = 'FROM: '.$email_remite."\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= 'Content-type: text/plain; charset=utf-8';
      
    //envio de email a miembros Aseiba (headers añadidos)

    $mail_aseiba=mail($mail_destino,$asunto_consulta,$cuerpo_consulta,$headers); 

    ?>
Si no te funciona, prueba una de estas, que no recuerdo muy bien la sintaxis

Código:
$headers .= 'Content-type: text/plain; charset="utf-8"';
o
$headers .= 'Content-type: text/plain; charset=utf8';
o
$headers .= 'Content-type: text/plain; charset="utf8"';
Un saludo.
  #4 (permalink)  
Antiguo 16/05/2008, 18:25
 
Fecha de Ingreso: abril-2008
Mensajes: 49
Antigüedad: 16 años
Puntos: 0
Respuesta: Problemas con decode y encode UTF

Gracias por las dos repuestas chicos.

El funcionamiento ahora es perfecto!
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 15:04.