Foros del Web » Programando para Internet » PHP »

acentos y UTF-8 no carbura

Estas en el tema de acentos y UTF-8 no carbura en el foro de PHP en Foros del Web. Hola a todos por acá Tengo un problema con un archivo php que envía datos a un mail desde Flash. Corre la película flash, lleno ...
  #1 (permalink)  
Antiguo 03/03/2007, 17:45
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 19 años, 3 meses
Puntos: 150
acentos y UTF-8 no carbura

Hola a todos por acá

Tengo un problema con un archivo php que envía datos a un mail desde Flash.

Corre la película flash, lleno un pequeñito formulario que pide nombre, y comentarios, al enviar se manda la info a un php que la envía a un email, nada del otro mundo (creo), pero desde el mismo cuerpo del mail y los datos introducidos, no muestra los acentos ni "ñ", por ejemplo:

Si pido el nombre de usuario, y alguien escribe algo con un acento, la variable pasa sin el acento (con caracteres raros).

Ya guarde el php desde block de notas en UTF-8 .php, y nada, sigue igual.

Dejo el código que estoy usando por si sirve de algo:

<?
$adminaddress = "[email protected]";
$date = date("d/m/Y H:i:s");
if ($REMOTE_ADDR == "") $ip = "no ip";
else $ip = getHostByAddr($REMOTE_ADDR);
mail("$adminaddress","Solicita ayuda $nombre",
"El usuario $nombre ha dejado sus datos \n
Información.

Fecha: $date
Nombre: $nombre
E-mail: $email
Dudas: $comments
?>

El texto en negrita que contiene un acento tampoco me lo pasa bien en el mail que recibo, entonces, creo que el problema esta en el php y no desde Flash.

Probé usando:

echo utf8_decode($nombreduda);
echo utf8_decode($comments);

Al final y al inicio del cuerpo del mail, pero nada...

Aclaro que este código lo fui depurando de algo que me encontré por ahí hace varios años y en ese entonces me funcionaba bien, ahora no se por qué el problema, quizá haya cambiado algo en la forma de interpretar el texto en la web (ni idea)... Y no se nada de php (sorry), no necesito más que esto, y que pase bien los acentos y eñes...

Gracias mil
  #2 (permalink)  
Antiguo 05/03/2007, 20:22
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 19 años, 3 meses
Puntos: 150
Re: acentos y UTF-8 no carbura

O bueno, cómo hago para que al recibir el mail que me envía el php, tenga los acentos bien, partiendo del ejemplo que expongo, dónde le meto qué código ?? :P

Gracias
  #3 (permalink)  
Antiguo 05/03/2007, 20:35
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: acentos y UTF-8 no carbura

Ese problema no siempre ocurre en todos los navegadores, lo que sucede es que algunos navegadores no soportan los carácteres en Español, la soluciòn es esta funciòn: htmlentities, esta función convierte a todos los carácteres en codigos html, ùsala para convertir el texto que ingresa por el formulario en codigo html.

Así:

$cmp = htmlentities($_POST["campo"]);

y listo.
  #4 (permalink)  
Antiguo 05/03/2007, 20:37
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: acentos y UTF-8 no carbura

Consultas: Cómo recoges las variables en PHP? Usás superglobales ($_POST, $_GET)? Cuándo hacés un echo, se escriben mal? En tus campos de formulario tenés la casilla html verificada? (Si sí, probaste sacándole ese atributo?) Usás System.useCodepage=true?
  #5 (permalink)  
Antiguo 05/03/2007, 20:45
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: acentos y UTF-8 no carbura

Cita:
Iniciado por Panino5001 Ver Mensaje
Consultas: Cómo recoges las variables en PHP? Usás superglobales ($_POST, $_GET)? Cuándo hacés un echo, se escriben mal? En tus campos de formulario tenés la casilla html verificada? (Si sí, probaste sacándole ese atributo?) Usás System.useCodepage=true?
Son muchas preguntas amiga, veremos.

En Php se puede recoger los campos enviados por un formulario mediante las variables superglobales $_POST y $_GET y depende de que quieras hacer para usar un mètodo u otro.

Cuando haces un echo se escribe bien, pero si el caracter es latino, o sea, una letra con acento o un ñ, pues el browser interpreta mal a veces, es decir, hay browser que lo soportan y otros que no.

La ultima pregunta no la entiendo.
  #6 (permalink)  
Antiguo 05/03/2007, 20:55
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: acentos y UTF-8 no carbura

Hola, ElJavista, las preguntas eran para RobiBaggio. El error es muy posible que se deba a que los campos de su Flash estén definidos como html. Tu solución de mostrar los textos con htmlentities o similar no le funcionará a menos que coloque un header a su función mail para convertirlo a html. Pero lo más probable es que el error se deba a cómo llegan los datos a php desde flash. La referencia a useCodepage tiene que ver con que Flash pase o no la codificación a unicode.
  #7 (permalink)  
Antiguo 05/03/2007, 20:58
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: acentos y UTF-8 no carbura

Cita:
Iniciado por Panino5001 Ver Mensaje
Hola, Eljavista, las preguntas eran para RobiBaggio. El error es muy posible que se deba a que los campos de su Flash estén definidos como html. Tu solución de mostrar los textos con htmlentities o similar no le funcionará a menos que coloque un header a su función mail para convertirlo a html. Pero lo más probable es que el error se deba a cómo llegan los datos a php desde flash. La referencia a useCodepage tiene que ver con que Flash pase o no la codificación a unicode.
Pues yo no entiendo casi nada de Flash, pero si de PHP y bien se que lo que he dicho es la soluciòn, ya he explicado porque. O sea, que no lo dije por intuiciòn sino por experiencia.
  #8 (permalink)  
Antiguo 05/03/2007, 21:02
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: acentos y UTF-8 no carbura

Pero el mail se está enviando como texto plano. Entonces, las palabras acentuadas no se verán bien. Ejemplo: palabra "llegará", el que reciba el mail leerá llegar&aacute;
  #9 (permalink)  
Antiguo 05/03/2007, 21:14
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: acentos y UTF-8 no carbura

Tiene ud razon, no me percatè que los datos se enviarìan como un mail, pensè por leer tan rapido que se guardaban en una base de datos, bueno la soluciòn entonces es esta, se usa la funcion que di, pero al enviar el correo se debe enviar como html y no como ASCII, esto se hace del siguiente modo:

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: Mensaje desde la Web <[email protected]>\r\n";
$headers .= "Reply-To: $ema \r\n";
$headers .= "Cc: [email protected]\r\n";
$headers .= "Bcc: [email protected]\r\n";

Estos son todos los campos que pueden entrar el cuarto paràmetro de la funcion mail, aunque no es necesario escribirlos todos, en este caso basta con que se escriban las dos lineas primeras, para enviar el mensaje se hace asì.

mail($email, $asunto, $mensaje, $headers);

asì el mensaje serà captado como html y no como texto y codigos como &aacute; se leerá como a acentuada.
  #10 (permalink)  
Antiguo 05/03/2007, 22:14
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 19 años, 3 meses
Puntos: 150
Re: acentos y UTF-8 no carbura



Bueno, gracias por las respuestas... :S

El problema por lo que puedo entender, no es flash, porque un caracter acentuado dentro del php que no sea recibido por los datos del flash también tienen ese problema, por eso posteo aquí en el foro de php y no en el de flash

Ahora bien, lo que dicen ustedes es hacer lo siguiente: (disculpar si no le muevo mucho, pero apenas entiendo cómo funciona este código :P )

<?
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

$adminaddress = "[email protected]";
$date = date("d/m/Y H:i:s");
if ($REMOTE_ADDR == "") $ip = "no ip";
else $ip = getHostByAddr($REMOTE_ADDR);
mail("$adminaddress","Solicita ayuda $nombre",
"El usuario $nombre ha dejado sus datos \n
Información.

Fecha: $date
Nombre: $nombre
E-mail: $email
Dudas: $comments
?>


Solo le coloco lo que esta en negrita y con eso bastará???
  #11 (permalink)  
Antiguo 05/03/2007, 22:18
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: acentos y UTF-8 no carbura

No bastarà, es necesario incluir la variable $headers dentro de la funcion mail
  #12 (permalink)  
Antiguo 05/03/2007, 22:26
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 19 años, 3 meses
Puntos: 150
Re: acentos y UTF-8 no carbura

Entonces el codigo quedaría así? (recuerdo que no se nada de php y estoy manipulando a tientas solo este código)

<?
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

$adminaddress = "[email protected]";
$date = date("d/m/Y H:i:s");
if ($REMOTE_ADDR == "") $ip = "no ip";
else $ip = getHostByAddr($REMOTE_ADDR);
mail("$adminaddress","Solicita ayuda $nombre",
$headers
"El usuario $nombre ha dejado sus datos \n
Información.

Fecha: $date
Nombre: $nombre
E-mail: $email
Dudas: $comments
?>
  #13 (permalink)  
Antiguo 05/03/2007, 22:26
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: acentos y UTF-8 no carbura

Todavía queda ver de donde salen $nombre, $email, etc.
Código PHP:
<?php
/*
Si enviaste los datos por post, $nombre y las demás variables deberían ser $nombre=$_POST['nombre']; y el resto con el mismo formato. 
*/
$headers "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"
$adminaddress "[email protected]";
$date date("d/m/Y H:i:s");
if (
$REMOTE_ADDR == ""$ip "no ip";
else 
$ip getHostByAddr($REMOTE_ADDR);
$cuerpo="El usuario $nombre ha dejado sus datos \nInformación:\nFecha: $date\nNombre: $nombr\nE-mail: $email\nDudas: $comments";
mail("$adminaddress","Solicita ayuda $nombre",$cuerpo,$headers);
//y aquí un echo '&status=enviado correctamente&'; si querés mandarle la variable status a flash o un header("gracias.php"); si querés redireccionar a una página de agradecimiento
?>
  #14 (permalink)  
Antiguo 05/03/2007, 22:29
Avatar de c0lo  
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires
Mensajes: 281
Antigüedad: 18 años, 9 meses
Puntos: 1
Re: acentos y UTF-8 no carbura

Pero no deberías poner:
Código:
$headers .= "Content-type: text/html; charset=utf-8\r\n";
en vez de:
Código:
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
?

Saludos
__________________
Nuestro amo juega al esclavo // de esta tierra que es una herida
que se abre todos los días // a pura muerte, a todo gramo.
Violencia es mentir.
  #15 (permalink)  
Antiguo 05/03/2007, 22:31
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: acentos y UTF-8 no carbura

Disculpa si esto te ofende, pero si dominas tan poco el PHP (a mi me parece que lo que dominas muy poco es la programaciòn) pues consulta personalmente con alguien que sepa. En fin, en ningùn momento yo he escrito esas variables, en segundo lugar esa variables deben estar incluidas en la variable de texto que se va a enviar si es que se queire enviar esos datos.

Otra vez le pido disculpas, la verdad no se como alguien intenta hacer una pagina web con php dominando tan poco php.

Le recomiendo escriba el codigo completo, tanto del formulario que envia, como el php que recoge y envia el email, entonces yo le devolvè el correcto.
  #16 (permalink)  
Antiguo 05/03/2007, 22:32
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: acentos y UTF-8 no carbura

Hola, Colo, según lo que llegue desde Flash: cuestión de probar.
ElJavista: nadie nace sabiendo, ni es posible dominar todos los temas, estamos para ayudar. Además, es un colaborador del foro y te aseguro que es un título que aquí no lo regalan, así que seguro que es experto en otras áreas y es posible que algún día te ayude con otras cosas que no dominas. No es necesario ofender.
  #17 (permalink)  
Antiguo 05/03/2007, 22:48
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 19 años, 3 meses
Puntos: 150
Re: acentos y UTF-8 no carbura



Bueno, no es un sitio web... y solo uso ese archivito en php, por el envío de datos por mail... si fuera para BD buscaría por XML... Si se fijan trabaja bien el archivo, solo el problema son los acentos, por eso pregunto aquí donde saben

las variables que uso luego del "$", son los nombres de variable de Flash, por eso las pasa tal cual, en Flash la variable se llama "name", contiene una información y en el mail recibo el valor que contiene la variable del php "$name" .... Voy a probar el código de Panino5001, y sobre esa linea hago pruebas (tampoco pido me den el código hecho, aunque se pueda )

Gracias !

Y sí, colaboro en el foro de multimedia por si necesitan algo
  #18 (permalink)  
Antiguo 05/03/2007, 22:53
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: acentos y UTF-8 no carbura

Igual insisto en un par de cosas: tannto si enviás con loadVars o loadVariables, que no sabemos, tendrías que ver que los campos no estén marcados como html y qué tipo de envío estás haciendo (get o post). En cualquiera de los 2 casos, debés recoger esas variables en php como $_POST['nombre'] para post o $_GET['nombre'] para get.
  #19 (permalink)  
Antiguo 05/03/2007, 23:06
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 19 años, 3 meses
Puntos: 150
Re: acentos y UTF-8 no carbura

Bien, con el código de Panino5001 ya se soluciona lo de los acentos, solo le tengo que dar formato porque se me desarregló... pero ya entiendo cómo va esto del:
$headers .= "Content-type: text/html; charset=utf-8\r\n";

En realidad no es tan complicado el flash, solo y tal cual coloco un campo de texto de entrada con su nombre de variable "nombreusuario"...

Ahí escriben algo y luego se aprieta un botón que ejecuta el código en AS:
loadVariables(cgilocation, "", "POST");

Y esto llama a un php con el código que les mostré...

Ya quedó, mil gracias por su atención y paciencia (y ganas de ayudar almas perdidas )

  #20 (permalink)  
Antiguo 05/03/2007, 23:11
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: acentos y UTF-8 no carbura

Me alegra que haya salido.
  #21 (permalink)  
Antiguo 06/03/2007, 10:03
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: acentos y UTF-8 no carbura

Cita:
Iniciado por Panino5001 Ver Mensaje
Hola, Colo, según lo que llegue desde Flash: cuestión de probar.
ElJavista: nadie nace sabiendo, ni es posible dominar todos los temas, estamos para ayudar. Además, es un colaborador del foro y te aseguro que es un título que aquí no lo regalan, así que seguro que es experto en otras áreas y es posible que algún día te ayude con otras cosas que no dominas. No es necesario ofender.
Amigo, nadie nace sabiendo, pero hay que subir los escalones uno por uno y no intentar subirse al 7mo escalon desde el 1ro, lo que yo trataba de decir es que la persona quien inició el foro no entiende casi nada lo que está haciendo, eso es ilógico. Debería entender la sintaxis del php haciendo cosas sencillas y luego hacer cada vez cosas mas complejas. No quise ofenderle, la verdad que es que tal vez lo que tiene que hacer eso algo urgente, eso puede ser, por eso dije que debería llamar a alguien que sepa, los foros son para responder a preguntas puntales sobre problemas de puntuales, la respuesta es para alguien que sabe y tiene un problema, no para alguien que no sabe casi nada. Ese es mi punto.
  #22 (permalink)  
Antiguo 06/03/2007, 10:14
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 19 años, 3 meses
Puntos: 150
Re: acentos y UTF-8 no carbura

Creo que la pregunta fue muy clara y puntual desde el principio, y aclaré que Yo no sabía de php, que solo tenía este código que antes funcionaba y ahora no, y por eso pregunto en un foro, porque las personas ayudan, si tu ElJavista, no lo queires hacer esta bien, aquí no pagan por ayudar

Si alguna vez necesitas crear un DVD y no sabes cómo, con todo gusto en el foro de multimedia te podemos ayudar, auqnue no sepas, porque para eso estamos los que ayudamos.

Claro que hay preguntas del tipo: http://www.forosdelweb.com/f3/efectos-especiales-468310/
donde piden que les expliques paso a paso o código port código sin tratar de querer aprender. En mi caso, solo tengo el problema de los acentos, ya depuré el código tratando de entender cómo funciona, porque lo mío es la multimedia, no el php, pero trato de entenderlo, como el formato que no he podido dárselo, pero estoy moviéndole para saber. Malo que no le pusiera interés en lo que pregunto.

Ahora, podrían crear dos foros php, uno para los que saben y se puedn tomar un café filosofando sobre los códigos, y otro para los que necesitan algo de ayuda sin ser masters. (<- esto ya fue sarcásmo)

Pero esta bien, si te ofende que los que preguntan no sepan lo mismo que vos, pues, nadie puede hacer nada, y los que tengan dudas preguntarán, aquí o allá o acullá...

suerte
  #23 (permalink)  
Antiguo 06/03/2007, 10:19
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: acentos y UTF-8 no carbura

Es necesario hacer un disculpa especial porque yo me exasperé por un error mío, pensé que ud. mismo había preguntado de donde salen las varibles, pero en verdad era otro usuario, por lo que pensé que ud. estaba más perdido en php que pinguino en desierto. Por eso hice ese comentario duro. Pero bueno, me alegra que le haya resultado y que en alguito haya ayudado (no puede decir que no lo haya hecho yo), a mi me gusta ayudar amigo (y a veces fastidiar tambien) y lo hago todo el tiempo, sino vea los demás temas del foro.
  #24 (permalink)  
Antiguo 05/05/2007, 13:49
 
Fecha de Ingreso: octubre-2003
Ubicación: Castellon
Mensajes: 82
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: acentos y UTF-8 no carbura

Alguien sabe como se trata el signo ", es decir comillas para que salga bien? yo utilizo flash para mostrar los contenidos que se sacan de una BBDD con php.
__________________
El trabajo del diseñador es hacer que lo complejo parezca sencillo.

Spain Beaches
  #25 (permalink)  
Antiguo 28/05/2009, 09:43
 
Fecha de Ingreso: mayo-2009
Mensajes: 1
Antigüedad: 15 años
Puntos: 0
Respuesta: acentos y UTF-8 no carbura

Algunos ejemplos para debian 5.0 a ver si les funciona, a mi me funciono aunque algunos acentos me quedan como cuadraditos en ascci jajaja xD

Opcion 1:
Editar /etc/apache2/conf.d/charset y agregarle "AddDefaultCharset UTF-8", o pueden dejar este como esta asi no modifica las demas paginas...

Opcion 2:
Editar /etc/php5/apache2/php.ini (en el caso que usen php5 es ese file, sino hay que ver) y agregarle: default_charset = "UTF-8"

Opcion 3:
Bueno esta es una opcion que no va a afectar a las demas paginas, es bastante sencilla pero sinceramente no me acuerdo que habia que poner, pero les dejo la info para que busquen en google (me da paja en este momento ajjaja). La cosa seria crear un .htaccess que adentro contenga el default charset que se va a usar a partir de ese directorio y listo.

Espero que les sirva y no les complique mucho...

La mejor opcion seria hablar con todas las entidades del mundo para que se pongan de acuerdo y usen un solo puto charset al menos para las paginas de internet! LPTMQLP!!!
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 05:30.