Autor Tema: [Ayuda] MySQL no acepta tildes ni caracteres extraños  (Leído 5438 veces)

Desconectado nmartin021

  • PHPero Avanzado
  • ****
  • Mensajes: 250
  • Karma: 9
    • Ver Perfil
[Ayuda] MySQL no acepta tildes ni caracteres extraños
« 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 :/

Comunidad PHPeros

[Ayuda] MySQL no acepta tildes ni caracteres extraños
« en: 15 de Octubre de 2011, 20:29:40 pm »

Desconectado DFX

  • PHPerit@
  • *
  • Mensajes: 3
  • Karma: 0
  • Sexo: Masculino
  • Dart Language
    • Ver Perfil
Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
« Respuesta #1 en: 15 de Octubre de 2011, 20:39:57 pm »
Hola nmartin021,

Código: [Seleccionar]
<meta charset="utf-8" />
Un saludo,
DFX
« Última modificación: 15 de Octubre de 2011, 20:48:30 pm por DFX »
Antes de contestar a la pregunta, mira bien tu respuesta.

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
« Respuesta #2 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 (Incluso encontré un tema de 2009 de aquí en PHPeros relacionado con el tema. Aquí lo tienes por si también te interesa)

Un saludo,
Siquillote.

#Fdo. Physlet

Desconectado nmartin021

  • PHPero Avanzado
  • ****
  • Mensajes: 250
  • Karma: 9
    • Ver Perfil
Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
« Respuesta #3 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
« Última modificación: 15 de Octubre de 2011, 21:10:52 pm por nmartin021 »

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
« Respuesta #4 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.

#Fdo. Physlet

Desconectado Physlet

  • PHPero Experto
  • *****
  • Mensajes: 822
  • Karma: 41
  • Sexo: Masculino
  • Todo es posible con esfuerzo, dedicación e interés
    • Ver Perfil
    • PanamaDev
Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
« Respuesta #5 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

Desconectado Warlox

  • Moderadores PHP
  • PHPero Master
  • ****
  • Mensajes: 1.278
  • Karma: 77
  • Sexo: Masculino
  • A veces hay que aprender a correr antes de caminar
    • Ver Perfil
    • Página personal
Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
« Respuesta #6 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.
- Moderador de PHP


Desconectado cibb

  • PHPerit@
  • *
  • Mensajes: 42
  • Karma: 0
  • Sexo: Masculino
  • el limite de la programación es tu imaginación!
    • Ver Perfil
Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
« Respuesta #7 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
Necesitas ayuda? Yo también :P

No pienso poner el <?php ?> Que ponen muchos para que todos vean que conocen lo básico de php -.-!!

Desconectado Warlox

  • Moderadores PHP
  • PHPero Master
  • ****
  • Mensajes: 1.278
  • Karma: 77
  • Sexo: Masculino
  • A veces hay que aprender a correr antes de caminar
    • Ver Perfil
    • Página personal
Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
« Respuesta #8 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 ^^
- Moderador de PHP


Desconectado nmartin021

  • PHPero Avanzado
  • ****
  • Mensajes: 250
  • Karma: 9
    • Ver Perfil
Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
« Respuesta #9 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

Desconectado MEJORENHO

  • PHPer@ Fijo
  • ***
  • Mensajes: 204
  • Karma: 3
  • Sexo: Masculino
    • Ver Perfil
    • Beeme
Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
« Respuesta #10 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

Desconectado nmartin021

  • PHPero Avanzado
  • ****
  • Mensajes: 250
  • Karma: 9
    • Ver Perfil
Re:[Ayuda] MySQL no acepta tildes ni caracteres extraños
« Respuesta #11 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.