Foros del Web » Programando para Internet » PHP »

Problemas con los acentos y la ñ

Estas en el tema de Problemas con los acentos y la ñ en el foro de PHP en Foros del Web. Hola a tod@s, de antemano gracias por vuestra ayuda, tengo un problema con un código PHP el cual es que he creado un formulario que ...
  #1 (permalink)  
Antiguo 24/05/2011, 03:28
 
Fecha de Ingreso: junio-2008
Mensajes: 250
Antigüedad: 15 años, 10 meses
Puntos: 1
Problemas con los acentos y la ñ

Hola a tod@s, de antemano gracias por vuestra ayuda, tengo un problema con un código PHP el cual es que he creado un formulario que se rellena y al pulsar sobre el botón envía los datos a una cuenta de correo electrónico todo esto funciona perfectamente. El problema es que no consigo que reconozcan ni los acentos ni la ñ y mas que miro en los foros y en todos lados no consigo solucionar este problema.

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html> 
<head>
     <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
     <meta http-equiv="Content-Type" content="text/html; charset=iso-10646" />
    
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <title>Mándanos tus comentarios</title> 
</head> 

<body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060"> 
<?php
$nombre 
$_POST['nombre'];
 
$mail $_POST['email'];
 
$empresa $_POST['coment'];

$header 'From: ' $email " \r\n";
 
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
 
$header .= "Mime-Version: 1.0 \r\n";
 
$header .= "Content-Type: text/plain";

 
$mensaje "Este mensaje fue enviado por " utf8_decode($nombre). " \r\n";
 
$mensaje .= "Su e-mail es: " $mail " \r\n";
 
$mensaje .= "Mensaje: " $_POST['mensaje'] . " \r\n";
 
$mensaje .= "Enviado el " date('d/m/Y'time());

 
$para '[email protected]';
 
$asunto 'Contacto desde Taller Webmaster';

mail($para$asuntoutf8_decode($mensaje), $header);

echo 
'&estatus=ok&';
 
?>


</body> 
</html>
  #2 (permalink)  
Antiguo 24/05/2011, 04:00
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 11 meses
Puntos: 261
Respuesta: Problemas con los acentos y la ñ

Yo utilizo un pequeña función. Esta cambiaría los caracteres a formato que lee html.

Igual hay algo más sencillo.
Código PHP:
function reemplazar_caracteres($cadena
{
    
$cadena str_replace('á' '&aacute;' $cadena);
    
$cadena str_replace('é' '&eacute;' $cadena);
    
$cadena str_replace('í' '&iacute;' $cadena);
    
$cadena str_replace('ó' '&oacute;' $cadena);
    
$cadena str_replace('ú' '&uacute;' $cadena);
    
$cadena str_replace('ñ' '&ntilde;' $cadena);
    
$cadena str_replace('Á' '&Aacute;' $cadena);
    
$cadena str_replace('É' '&Eacute;' $cadena);
    
$cadena str_replace('Í' '&Iacute;' $cadena);
    
$cadena str_replace('Ó' '&Oacute;' $cadena);
    
$cadena str_replace('Ú' '&Uacute;' $cadena);
    
$cadena str_replace('Ñ' '&Ntilde;' $cadena);
    
    return 
$cadena;
}

...
$nombre reemplazar_caracteres($_POST['nombre']);
...
$empresa reemplazar_caracteres($_POST['coment']);
... 
Saludos,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #3 (permalink)  
Antiguo 24/05/2011, 04:55
 
Fecha de Ingreso: junio-2008
Mensajes: 250
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Problemas con los acentos y la ñ

Muchas gracias pero esta función tampoco me funciona probe algo similar utilizando
str_replace() pero no hay manera. Lo que más me extraña que cuando muestro en pantalla los datos que he mandado respeta las ñ y los acentos pero cuando miro el mensaje que me llega a mi correo de yahoo es cuando llega mal.
  #4 (permalink)  
Antiguo 24/05/2011, 05:27
 
Fecha de Ingreso: junio-2008
Mensajes: 250
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Problemas con los acentos y la ñ

Lo que me muestra en el mensaje es en código ascii pero no su representación
Cita:
Este mensaje fue enviado por &aacute;&iacute;&oacute;&uacute;&ntilde;
Su e-mail es:
Mensaje:
Enviado el 24/05/2011
  #5 (permalink)  
Antiguo 24/05/2011, 06:43
Avatar de apolazo  
Fecha de Ingreso: mayo-2011
Ubicación: Cabrero
Mensajes: 118
Antigüedad: 12 años, 11 meses
Puntos: 2
Respuesta: Problemas con los acentos y la ñ

Compañero te paso esto que lo pones al principio de la página.

<meta name=description content="">
<meta name=keywords content="">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

y si lo quieres hacer manual aqui va esto

&aacute; (ACENTO) == &""acute;
&ntilde; (Ñ)

Espero que te sirva, a mi me anda de maravilla :D
  #6 (permalink)  
Antiguo 24/05/2011, 08:11
 
Fecha de Ingreso: junio-2008
Mensajes: 250
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Problemas con los acentos y la ñ

Nada, no hay forma, más que pruebo códigos sigo sin conseguir que no me muestre &ntilde; si no que me muestre ñ y no se donde me estoy equivocando.
Dejo aquí el código que tengo. Y muchas gracias por la ayuda, pero no se donde estoy cometiendo el error.
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html> 
<head>
<meta name=description content="text/html;">
<meta name=keywords content="text/html;">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
     <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
     <meta http-equiv="Content-Type" content="text/html; charset=iso-10646" />
    
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <title>M&aacute;ndanos tus comentarios</title> 
</head> 

<body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060"> 
<?php
$nombre 
$_POST['nombre'];
 
$mail $_POST['email'];
 
$empresa $_POST['coment'];
/**/
function reemplazar_caracteres($cadena)  

    
$cadena str_replace('á' '&aacute;' $cadena); 
    
$cadena str_replace('é' '&eacute;' $cadena); 
    
$cadena str_replace('í' '&iacute;' $cadena); 
    
$cadena str_replace('ó' '&oacute;' $cadena); 
    
$cadena str_replace('ú' '&uacute;' $cadena); 
    
$cadena str_replace('ñ' '&ntilde;' $cadena); 
    
$cadena str_replace('Á' '&Aacute;' $cadena); 
    
$cadena str_replace('É' '&Eacute;' $cadena); 
    
$cadena str_replace('Í' '&Iacute;' $cadena); 
    
$cadena str_replace('Ó' '&Oacute;' $cadena); 
    
$cadena str_replace('Ú' '&Uacute;' $cadena); 
    
$cadena str_replace('Ñ' '&Ntilde;' $cadena); 
     
    return 
$cadena
}
$nombre reemplazar_caracteres($_POST['nombre']); 

$empresa reemplazar_caracteres($_POST['coment']);
/**/
$header 'From: ' $email " \r\n";
 
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
 
$header .= "Mime-Version: 1.0 \r\n";
 
$header .= "Content-Type: text/plain";

 
$mensaje "Este mensaje fue enviado por " $nombre " \r\n";
 
$mensaje .= "Su e-mail es: " $mail " \r\n";
 
$mensaje .= "Mensaje: " $_POST['mensaje'] . " \r\n";
 
$mensaje .= "Enviado el " date('d/m/Y'time());

 
$para '[email protected]';
 
$asunto 'Contacto desde Taller Webmaster';


mail($para$asunto$mensaje$header);

echo 
'&estatus=ok&';
 
?>


</body> 
</html>
  #7 (permalink)  
Antiguo 24/05/2011, 08:26
 
Fecha de Ingreso: junio-2008
Mensajes: 250
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Problemas con los acentos y la ñ

aquí dejo el formulario por si se debe a algo de el.

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
<
head>
<
meta name=description content="">
<
meta name=keywords content="">
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<
META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<
meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<
meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<
meta http-equiv="Content-Type" content="text/html; charset=iso-10646" />
    <
title>M&#65533;ndanos tus comentarios</title> 
</head

<
body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060"

<
form action="formularioemail2.php" method="post" 
Nombre: <input type=text name="nombre" size=16>
<
br
Email: <input type=text name="email" size=16
<
br
Comentarios: <textarea name="mensaje" cols=32 rows=6></textarea
<
br
<
input type=submit value="Enviar"
</
form

</
body
</
html
  #8 (permalink)  
Antiguo 24/05/2011, 08:36
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Problemas con los acentos y la ñ

para mi el problema NO radica en que el este utilizando mal el juego de caracteres sino en el TIPO DE CARACTERES que utiliza en el HEADER del mensaje:

$header .= "Content-Type: text/plain";"

Yo lo cambiaría a HTML
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #9 (permalink)  
Antiguo 24/05/2011, 08:38
Avatar de apolazo  
Fecha de Ingreso: mayo-2011
Ubicación: Cabrero
Mensajes: 118
Antigüedad: 12 años, 11 meses
Puntos: 2
Respuesta: Problemas con los acentos y la ñ

Te bajaste una plantilla verdad? Pon el código encima del HTML


<meta name=description content="">
<meta name=keywords content="">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<html>
<head>

y si no te funciona usa el código
&aacute; (ACENTO) == &""acute;
&ntilde; (Ñ)
cualquier duda me dices como lo pones, pero te pondre un ejemplo

si escribes concepción lo pones asi en el código concepci&oacute;n
fijate concepci"&oacute;"n
  #10 (permalink)  
Antiguo 24/05/2011, 08:42
Avatar de apolazo  
Fecha de Ingreso: mayo-2011
Ubicación: Cabrero
Mensajes: 118
Antigüedad: 12 años, 11 meses
Puntos: 2
Respuesta: Problemas con los acentos y la ñ

Prueba este

<meta name=description content="">
<meta name=keywords content="">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<html>
<head>
<title>Mándanos tus comentarios</title>
</head>

<body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060">

<form action="formularioemail2.php" method="post" >
Nombre: <input type=text name="nombre" size=16>
<br>
Email: <input type=text name="email" size=16>
<br>
Comentarios: <textarea name="mensaje" cols=32 rows=6></textarea>
<br>
<input type=submit value="Enviar">
</form>

</body>
</html>
  #11 (permalink)  
Antiguo 24/05/2011, 08:43
Avatar de apolazo  
Fecha de Ingreso: mayo-2011
Ubicación: Cabrero
Mensajes: 118
Antigüedad: 12 años, 11 meses
Puntos: 2
Respuesta: Problemas con los acentos y la ñ

En el formulario tambien deves poner la etiqueta del HTML para la nomesclatura al español.
<meta name=description content="">
<meta name=keywords content="">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
  #12 (permalink)  
Antiguo 24/05/2011, 08:48
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Problemas con los acentos y la ñ

Amigo intenta mandar el mensaje con estos headers y nos cuentas que tal te funciona:

$headers.='MIME-version: 1.0'."\r\n";
$headers.='Content-type: text/html; charset=utf-8'."\r\n";
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #13 (permalink)  
Antiguo 24/05/2011, 14:55
 
Fecha de Ingreso: junio-2008
Mensajes: 250
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Problemas con los acentos y la ñ

Muchas gracias por vuestra ayuda. Efectivamente jotaincubus el problema radicaba en el $header
Yo lo tenía de la siguiente manera:
Código PHP:
$header 'From: ' $email " \r\n";
 
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
 
$header .= "Mime-Version: 1.0 \r\n";
 
$header .= "Content-Type: text/plain"
Y lo correcto es como me dijo jotaincubus:
Código PHP:
$header 'From: ' $email " \r\n";
 
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
$header.='MIME-version: 1.0'."\r\n";
$header.='Content-type: text/html; charset=utf-8'."\r\n"

Etiquetas: acentos
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 20:13.