Foros del Web » Programando para Internet » PHP »

Problema con encoding?

Estas en el tema de Problema con encoding? en el foro de PHP en Foros del Web. Hola a todos, estoy haciendo un script y estoy desesperado. Veamos, yo tengo un formulario por el que se manda un texto por un <textarea> ...
  #1 (permalink)  
Antiguo 27/01/2006, 02:41
Avatar de KarQ  
Fecha de Ingreso: septiembre-2005
Mensajes: 88
Antigüedad: 12 años, 3 meses
Puntos: 1
Problema con encoding?

Hola a todos, estoy haciendo un script y estoy desesperado.

Veamos, yo tengo un formulario por el que se manda un texto por un <textarea> a través del POST, hasta ahí bien, pero al ejecutar la siguiente consulta:

Código PHP:
    mysql_query("UPDATE `" $krq_mysqlconnect['tabla'] . "` SET titulo=\"" $_POST['msgtitulo'] . "\", prioridad=" $msgprioridad ", cuerpo=\"" $_POST['msgcuerpo'] . "\" WHERE `id`=" $_GET['msg'] . " LIMIT 1"); 
me encuentro con que si he añadido acentos ó ñ o algo así me lo guarda de la siguiente forma:

Original: Cagüentó, mi script no funciona bien.
Guardado: Cagüentó, mi script no funciona bien.

el caso es que nunca me había pasado y no se que estoy haciendo mal, no es la primera vez que proceso formularios y otras veces no he tenido problemas con esto. ¿Alguien me puede ayudar? . Muchas gracias.
__________________
KarQ - xC
mi weblog en: http://www.monochromatic.es
  #2 (permalink)  
Antiguo 27/01/2006, 04:03
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 12 años
Puntos: 1
Hola,
por qué no intentas:

Código PHP:
mysql_query("UPDATE `" $krq_mysqlconnect['tabla'] . "` SET titulo=\"" addslashes($_POST['msgtitulo']) . "\", prioridad=" $msgprioridad ", cuerpo=\"" htmlentities(addslashes($_POST['msgcuerpo'])) . "\" WHERE `id`=" $_GET['msg'] . " LIMIT 1"); 
y cuando extraigas el texto de la base de datos usas:

Código PHP:
html_entity_decode($row["cuerpo"]) 
te vale? Ciao
__________________
http://www.nosoynadie.net/
  #3 (permalink)  
Antiguo 27/01/2006, 04:15
Avatar de KarQ  
Fecha de Ingreso: septiembre-2005
Mensajes: 88
Antigüedad: 12 años, 3 meses
Puntos: 1
No sirve

Sucede exactamente lo mismo, el caso es que si devuelvo $_POST["msgcuerpo"] con un echo me sale por el navegador a la perfección, el problema no se donde está, ya había pensado lo de la codificación URL o los caracteres HTML además de que todo el documento generado sale en UTF-8, pero esto ya no se ni que es lo que está pasando.

Lo extraño del asunto es que tengo otro script con formularios y que hace un update parecido y en este caso sale todo bien yo no entiendo nada.

De todas formas agradezco tu respuesta nosoynadie, a ver si vemos pq pasa que me extraña esto un webo

A ver si alguien lo sabe. Gracias a todos
__________________
KarQ - xC
mi weblog en: http://www.monochromatic.es
  #4 (permalink)  
Antiguo 27/01/2006, 07:25
Avatar de KarQ  
Fecha de Ingreso: septiembre-2005
Mensajes: 88
Antigüedad: 12 años, 3 meses
Puntos: 1
Maldita Sea!

He seguido investigando y he pensado que el error podría venir del tipo de datos, que se almacenan en binario ya que el campo es BLOB, pero lo he cambiado a TEXT e incluso a VARCHAR y ni por esas. No se que hacer, y seguro que el error es la tontería más grande..................

AYUDA POR FAVOOOOOOOOOOOR
__________________
KarQ - xC
mi weblog en: http://www.monochromatic.es
  #5 (permalink)  
Antiguo 27/01/2006, 07:42
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 11 años, 11 meses
Puntos: 5
Buenas.

Cita:
Guardado: Cagüentó, mi script no funciona bien.
Estos caracteres aparecen cuando querés mostrar algo codificado en utf-8 por medio de un dispositivo que codifica en iso-8859-1.

En tu caso, seguro que el problema es que la base está seteada en iso-8859-1 pero le estás mandando utf-8. Seguramente, si ves la base con phpmyadmin (o algún otro admin) vas a ver esos mismos caracteres. Se me ocurren tres cosas que podrías hacer:
  • Cambiar el encoding de la base a utf-8 (aunque a mí hacer esto siempre me complicó más de lo que me solucionó)
  • Cambiar el el encoding del documento a iso-8859-1 con header()
  • Dejar los encodings del documento y de la base como están y usar la función utf8_decode() ANTES de grabar en la base, y utf8_encode() ANTES de mostrar los resultados que traés de la base.

Si querés, echale un mirada a estos threads para ver algunos ejemplos y pruebas.

http://www.forosdelweb.com/f18/purificar-valor-variable-362547/
http://www.forosdelweb.com/showthrea...ighlight=utf-8

Suerte
Califa
  #6 (permalink)  
Antiguo 27/01/2006, 07:46
Avatar de KarQ  
Fecha de Ingreso: septiembre-2005
Mensajes: 88
Antigüedad: 12 años, 3 meses
Puntos: 1
Vaya, gracias!!!!!, lo estaba haciendo JUSTO al revés, con utf8_encode en lugar de utf8_decode. Ya sabía yo que esto era muy raro xDD. Pues bueno, muchisimas gracias, ya puedo seguir tranquilo.
__________________
KarQ - xC
mi weblog en: http://www.monochromatic.es
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 07:27.