Comunidad PHPeros
Lenguajes => PHP => Mensaje iniciado por: nmartin021 en 15 de Octubre de 2011, 20:29:40 pm
-
Hola!
Estoy intentando meter datos en mi BD y todo va bien hasta que meta algún caracter especial, como alguna tilde o la ñ... al hacerlo, se invierte el orden de los datos (porque los saco con mysql_fetch_row) y los caracteres extraños aparecen como Ã... es por la BD, miré en phpMyAdmin y sale igual de mal.
Nota: Tengo otras tablas en las que inserto datos y se quedan así como los inserto, no me dan problemas :/
-
Hola nmartin021,
<meta charset="utf-8" />
Un saludo,
DFX
-
Hola Martin,
La verdad es que yo nunca he tenido este problema y no se explicarte que deberías hacer pero googleando un poco respecto al tema, he encontrado esto (http://www.cristalab.com/tutoriales/como-colocar-acentos-y-caracteres-especiales-en-tu-web-c60502l/) (Incluso encontré un tema de 2009 de aquí en PHPeros relacionado con el tema. Aquí (http://www.phperos.net/foro/index.php?topic=3494.0) lo tienes por si también te interesa)
Un saludo,
Siquillote.
-
@DFX:
Repito, problema está en MySQL! No en mi charset, porque lo demás funciona bien, sólo lo que saco de la bd no
@Siquillote:
No, el problema no es ese. Es que los datos se guardan mal en la base de datos
Saludos
-
@DFX:
Repito, problema está en MySQL! No en mi charset, porque lo demás funciona bien, sólo lo que saco de la bd no
@Siquillote:
No, el problema no es ese. Es que los datos se guardan mal en la base de datos
Saludos
Pues entonces tendrás que colocar el código para verlo :).
Un saludo,
Siquillote.
-
1. Comprueba que la base de datos y las tablas están cotejadas por unicode
2. Comprueba que la codificación del archivo sea UTF-8
-
Hola. Por lo que leo, el problema lo tienes a la hora de insertar los datos a MySQL, entonces lo que deberías hacer es utilizar un filtro que codifique los acentos y etiquetas HTML. Para eso puedes usar la función htmlspecialchars().
Cuéntame cómo te fue.
Saludos.
-
Lo que yo hago es utilizar este fragmento de código abajo de la coneccion
mysql_set_charset('utf8')
Asi, seco.
Espero te sirva
Nos vemos
-
Por cierto, aprovecho a mover el tema, la verdad esto no tiene nada de POO =S
Saludos ^^
-
Por cierto, aprovecho a mover el tema, la verdad esto no tiene nada de POO =S
Saludos ^^
Lo siento, lo puse aquí sin querer :P
1. Comprueba que la base de datos y las tablas están cotejadas por unicode
2. Comprueba que la codificación del archivo sea UTF-8
Hace poco usaba iso-8859-1 y todo iba bien
Hola. Por lo que leo, el problema lo tienes a la hora de insertar los datos a MySQL, entonces lo que deberías hacer es utilizar un filtro que codifique los acentos y etiquetas HTML. Para eso puedes usar la función htmlspecialchars().
Cuéntame cómo te fue.
Saludos.
No, porque uso bbcode para que se pueda dar formato a los mensajes pero con un límite, ya sabes, en vez de html, bbcode. Y necesito el bbcode original para poder citar, etc.
Además, uso htmlspecialchars() para mostrar el contenido y evitar el XSS.
Saludos
-
¿Y no has probado a poner el htmlspecialchars() a la hora de insertar a la db en vez de cuando lo quieres mostrar?
mysql_query("Insert into tabla (mensaje, usuario) VALUES ('".htmlspecialchars($mensaje)."', '".htmlspecialchars($usuario)."'");
Por ejemplo :S
-
¿Y no has probado a poner el htmlspecialchars() a la hora de insertar a la db en vez de cuando lo quieres mostrar?
mysql_query("Insert into tabla (mensaje, usuario) VALUES ('".htmlspecialchars($mensaje)."', '".htmlspecialchars($usuario)."'");
Por ejemplo :S
NO, como antes mencioné, guardo los mensajes con bbcode (y mysql_real_escape_string, claro), y necesito guardarlos tal y como están, porque a la hora de citar, si el usuario ha puesto (por ejemplo) ">.<" va a salir ">.<". Y no quiero gastar aún más RAM para decodificar el htmlspecialchars() con htmlspecialchars_decode().
Saludos.