Foros del Web » Programando para Internet » PHP »

Carácteres especiales incorrectos en MySql al insertar

Estas en el tema de Carácteres especiales incorrectos en MySql al insertar en el foro de PHP en Foros del Web. Hola, He estado mirando el FAQ como solucionar mi problema y la verdad que no me ha quedado nada claro. Lo que me pasa es ...
  #1 (permalink)  
Antiguo 08/03/2008, 08:29
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Carácteres especiales incorrectos en MySql al insertar

Hola,
He estado mirando el FAQ como solucionar mi problema y la verdad que no me ha quedado nada claro.

Lo que me pasa es que cuando inserto algo en mi BBDD (MySQL) que contiene carácteres especiales me salen cosas raras...
En el FAQ he visto que se habla del cotejamiento y de poner:

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

en los docuentos HTML, pero no soluciona mi problema-. También he cambiado el default_charset del php.ini y lo he cambiado de iso-8859-1 a UTF-8, pero no ha cambiado nada.

Seguramente no he hecho lo correcto o he hecho algo mal. Si me podeis ayudar os estaré muy agradecido.

Gracias de antemano!
  #2 (permalink)  
Antiguo 08/03/2008, 08:39
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Carácteres especiales incorrectos en MySql al insertar

Revisa que el cotejamiento de tu BD sea tambien UTF-8


Saludos
  #3 (permalink)  
Antiguo 08/03/2008, 10:01
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Carácteres especiales incorrectos en MySql al insertar

Pero cual de ellos???

utf8_bin
utf8_unicode_ci
utf8_spanish_ci
utf8_spànish2_ci

Solo cambiando el cotejamiento ya me sirve???
  #4 (permalink)  
Antiguo 08/03/2008, 10:16
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Carácteres especiales incorrectos en MySql al insertar

Yo utilizo el utf8_general_ci y me funciona perfecto

Saludos.
  #5 (permalink)  
Antiguo 08/03/2008, 10:18
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Carácteres especiales incorrectos en MySql al insertar

Y en la cabecera pones el:

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

También cambiaste el php.ini?
Cuando escribes en el HTML, sigues poniendo el %aacute y toda la pesca o como va?
  #6 (permalink)  
Antiguo 08/03/2008, 10:22
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Carácteres especiales incorrectos en MySql al insertar

El php.ini no lo cambie lo demás como dices y sin problemas


Saludos
  #7 (permalink)  
Antiguo 08/03/2008, 10:25
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Carácteres especiales incorrectos en MySql al insertar

Ok, voy a probar como dices y te digo a ver que tal. Muchas gracias!!!
  #8 (permalink)  
Antiguo 08/03/2008, 10:34
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Carácteres especiales incorrectos en MySql al insertar

Otra pregunta, cuando creé la base de datos, en el cotejamiento le puse: latin_spanish_ci y ahora eso no puedo cambiarlo des de el phpmyadmin. He cambiado el cotejamiento de las conexions MySql al utf8_general_ci como me has dicho pero no me salen los acentos, me continua saliendo una cosa muy raro.
Sabes como cambiar el cotejamiento de la base de datos y de sus tablas sin tener que eliminarla???
  #9 (permalink)  
Antiguo 08/03/2008, 10:39
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Carácteres especiales incorrectos en MySql al insertar

Es muy raro que desde el phpmyadmin no lo puedas hacer no acabo de probar y si se deja cambiar el cotejamiento a las tablas y a la BD, seleccionas la tabla, seleccionas la pestaña estructura y en la opción modificar haces los cambios que deseas.


Saludos.
  #10 (permalink)  
Antiguo 08/03/2008, 10:43
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Carácteres especiales incorrectos en MySql al insertar

Ok, ya he cambiado el cotejamiento.

Pues no, me sigue saliendo mal el acento. En lugar de Telecomunicación me escribe Telecomunicación.

No tengo que hacer nada en el html o en el php para controlar los caracteres especiales??? Solo com la metaetiqueta ya vale?

Última edición por crujikoki; 08/03/2008 a las 10:52
  #11 (permalink)  
Antiguo 08/03/2008, 10:53
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Carácteres especiales incorrectos en MySql al insertar

Pues me parece raro el cotejamiento de las tablas lo puedes cambiar yo utilizo phpMyAdmin - 2.11.4 pero no veo porque tienes problemas con esto en la pagina de inicio del phpMyAdmin deberias poder hacer esto, otra cosa es el cotejamiento de las conexiones MySQL a ver te explico un poco de lo que tengo, yo utilizo un módulo para insertar noticias en una tabla de mi BD la cual tiene cotejamiento utf8_general_ci las noticias van con acentos, y demas caracteres, posteriormente en mi diseño listo las noticias por medio de una consulta en mi tabla y salen exactemente los caractéres, como tambien están en la BD sin ningun problema

Saludos.
  #12 (permalink)  
Antiguo 08/03/2008, 10:58
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Carácteres especiales incorrectos en MySql al insertar

Prueba a poner cualquiera de estas etiquetas en el HTML verifica con cada una
Código HTML:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
Saludos.
  #13 (permalink)  
Antiguo 08/03/2008, 11:01
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Carácteres especiales incorrectos en MySql al insertar

Pues tio no se que es lo que hago mal...
Ahora mismo tengo la base de datos, las tablas y el contenido de estas, todo, en utf8_general_ci. Tengo las metaetiquetas puestas en todas las páginas y cuando hay un acento pongo &aacute (para la á) i en el JS uso el unicode \u00f1 (para la ñ). Me dejo algo???
  #14 (permalink)  
Antiguo 08/03/2008, 11:12
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Carácteres especiales incorrectos en MySql al insertar

Deja las tablas en tu BD como las tienes cuando vayas a insertar un registro o lo que tu tengas, no utilizes los caracteres especiales simplemente escribe normal con acentos y demás , la verdad no se me ocurre otra cosa


Saludos.
  #15 (permalink)  
Antiguo 08/03/2008, 11:59
 
Fecha de Ingreso: enero-2008
Mensajes: 68
Antigüedad: 16 años, 3 meses
Puntos: 1
Re: Carácteres especiales incorrectos en MySql al insertar

Creo saber que es lo que te pasa porque a mi me sucedio algo parecido


Al cambiar el corejamiento
no basta con cambiar el meta-tag

lo que tienes que hacer es cambiar la codificacion del archivo
esto es bien simple

puedes abrir el archivo con un block de notas o gedit

seleccionas guardar como

en el menu de codificacion seleccionas utf-8

luego guardas el archivo

ahora debería correr sin problemas


Ojalá que esto solucione tu problema
  #16 (permalink)  
Antiguo 08/03/2008, 14:00
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años
Puntos: 60
Re: Carácteres especiales incorrectos en MySql al insertar

ya que pusiste tus meta con utf-8

a la hora de recoger tus datos en el que inserta en la DB hazles un

Código PHP:
//ejemplo
$nombre utf8_decode($_POST['nombre']); 
Y ya cuando los vayas a imprimir en el archivo donde sacas tus resultados hazles un

Código PHP:
//ejemplo
echo utf8_encode($row['nombre']); 
Suponiendo que ya tienes el collate utf8 en los campos de la DB y las meta en utf-8

y listo ya no tendras ningun problema con acentos ni demas caracteres
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #17 (permalink)  
Antiguo 09/03/2008, 10:02
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Carácteres especiales incorrectos en MySql al insertar

Gracias a todos por responder.

He probado todo lo que decis, e incluso googleando he visto que dicen que hay que usar mysql_real_escape_string() para evitar esto (entre otras cosas) pero esa fución me da un error de sistema... Muy raro!

Los que me habeis dicho que cambiando esto, o lo otro, o lo que fuera que cambiasteis para que os fuera bien, cuando haciais la inserción en la base da datos como lo haciais?? A lo mejor lo que hago mal es eso. Yo lo hago así:

Código PHP:

$sql 
"INSERT INTO datos (Nombre, Apellido, Edad, Profesion, Provincia,
Poblacion, Creacion, Modificacion, Login, LoginMod, ID) VALUES 
('$_POST[nombre]','$_POST[apellido]','$_POST[edad]','$_POST[pofesion]',
'$_POST[provincia]','$_POST[poblacion]','$fecha','$fecha','$login','$login',NULL)"
;

mysql_query($sql,$con
  #18 (permalink)  
Antiguo 09/03/2008, 10:21
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Carácteres especiales incorrectos en MySql al insertar

Cual es el error que te da? en cuanto a usar la función mysql_real_escape_string() o sino prueba como te dijo_ssx

Código PHP:
$nombre utf8_decode($_POST['nombre']);
// Asi a todas las variables que necesitas insertar en la BD 


Saludos.
  #19 (permalink)  
Antiguo 09/03/2008, 10:36
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Carácteres especiales incorrectos en MySql al insertar

Me da un error de sitema en el JS. También he probado lo qu me recomendó _ssx, pero no ha funcionado.
Ya no se que más hacer!!!

Última edición por crujikoki; 10/03/2008 a las 02:22
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




La zona horaria es GMT -6. Ahora son las 13:30.