Comunidad PHPeros

Lenguajes => PHP => Mensaje iniciado por: nmartin021 en 15 de Octubre de 2011, 20:29:40 pm

Título: [Ayuda] MySQL no acepta tildes ni caracteres extraños
Publicado 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 :/
Título: Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
Publicado por: DFX en 15 de Octubre de 2011, 20:39:57 pm
Hola nmartin021,

Código: [Seleccionar]
<meta charset="utf-8" />
Un saludo,
DFX
Título: Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
Publicado por: Siquillote en 15 de Octubre de 2011, 20:44:52 pm

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.
Título: Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
Publicado por: nmartin021 en 15 de Octubre de 2011, 20:53:19 pm
@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
Título: Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
Publicado por: Siquillote en 15 de Octubre de 2011, 21:36:11 pm

@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.
Título: Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
Publicado por: Physlet en 15 de Octubre de 2011, 22:56:58 pm
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
Título: Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
Publicado por: Warlox en 16 de Octubre de 2011, 00:29:20 am
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.
Título: Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
Publicado por: cibb en 16 de Octubre de 2011, 04:11:04 am
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
Título: Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
Publicado por: Warlox en 16 de Octubre de 2011, 05:28:55 am
Por cierto, aprovecho a mover el tema, la verdad esto no tiene nada de POO =S
Saludos ^^
Título: Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
Publicado por: nmartin021 en 23 de Octubre de 2011, 03:43:57 am
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
Título: Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
Publicado por: MEJORENHO en 23 de Octubre de 2011, 11:45:54 am
¿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
Título: Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
Publicado por: nmartin021 en 23 de Octubre de 2011, 18:30:55 pm
¿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 "&gt;.&lt;". Y no quiero gastar aún más RAM para decodificar el htmlspecialchars() con htmlspecialchars_decode().

Saludos.