Foros del Web » Programando para Internet » PHP »

Utf8 vuelve a dar problemas - Insertando datos en Mysql

Estas en el tema de Utf8 vuelve a dar problemas - Insertando datos en Mysql en el foro de PHP en Foros del Web. Hola... ayer abrí un tema porque utf8 no mostraba correctamente en formularios, y fue solucionado. Pero curiosamente viene otro problema y este surge al intentar ...
  #1 (permalink)  
Antiguo 27/08/2011, 07:16
Avatar de Alvaro_Franz  
Fecha de Ingreso: mayo-2011
Mensajes: 84
Antigüedad: 8 años, 6 meses
Puntos: 4
Utf8 vuelve a dar problemas - Insertando datos en Mysql

Hola... ayer abrí un tema porque utf8 no mostraba correctamente en formularios, y fue solucionado.

Pero curiosamente viene otro problema y este surge al intentar meter dichos datos en la base de datos MySql (todo está establecido para usar cotejamiento uft8_unicode_ci

Nota que me llama la atención: Tras enviar los datos en el formulario y hacer un echo, estos muestran los caracteres problemáticos tal y cuál, por ejemplo:

Camión, en el código fuente se muestra tal cuál, y si hago un utf8_encode() antes de hacer el echo, este vuelve a mostrarse de forma extraña.

Sigo investigando, pero este es un gran quebradero de cabeza.
__________________
La verdadera libertad consiste en dominarse a uno mismo
  #2 (permalink)  
Antiguo 27/08/2011, 10:31
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.975
Antigüedad: 11 años, 3 meses
Puntos: 2190
Respuesta: Utf8 vuelve a dar problemas - Insertando datos en Mysql

Si se muestra correctamente es porque ya tienes especificado el juego de caracteres adecuado y, si pasas una cadena codificada en utf8 por utf8_encode() seguro que los resultados seran muy extraños, porque la funcion espera recibir una cadena en iso o algun otro juego de caracteres.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 27/08/2011, 10:39
 
Fecha de Ingreso: julio-2009
Mensajes: 178
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Utf8 vuelve a dar problemas - Insertando datos en Mysql

Si no quieres tener problemas con carácteres especiales debes tener la bd con cotejamiento utf8_spanish o general y el campo en spanish, luego en l función de conexión debes hacer un query con esta sentencia "SET NAMES 'utf8'" y lo último es que en la página a mostrar y en los formularios tengan el charset utf-8
  #4 (permalink)  
Antiguo 27/08/2011, 18:04
Avatar de Alvaro_Franz  
Fecha de Ingreso: mayo-2011
Mensajes: 84
Antigüedad: 8 años, 6 meses
Puntos: 4
Respuesta: Utf8 vuelve a dar problemas - Insertando datos en Mysql

Gracias probaré a hacerlo pero... ¿qué diferencia hay entre utf8_spanish y utf8_unicode? Es que pretendo utilizar el servicio en otros idiomas y no querría tener problemas en un futuro.

Por otro lado, ¿no basta con ejecutar "set names utf8" una vez en mi tabla mysql para que valga siempre?, es decir, ¿necesito ejecutar esta consulta justo antes de cada uno de los queries que vaya a realizar?

Un saludo y gracias por sus respuestas.
__________________
La verdadera libertad consiste en dominarse a uno mismo
  #5 (permalink)  
Antiguo 27/08/2011, 20:03
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.975
Antigüedad: 11 años, 3 meses
Puntos: 2190
Respuesta: Utf8 vuelve a dar problemas - Insertando datos en Mysql

Basicamente, ambos son lo mismo, las pequeñas diferencias entre cada juego de caracteres utf8 es que aplican variantes para comparar y ordenar, siendo utf8_general el que tiene mejor rendimiento y utf8_unicode el mas consistente.

La eleccion del juego de caracteres deberia basarse en lo que realmente es mas importante y de que forma podria afectar las consultas, es decir, si el rendimiento cambia drasticamente, tal vez convenga quedarse con el general o, por el contrario, si las busquedas e indices no se presentan en el orden esperado, entonces decidir por unicode.

Mas info en ingles: http://me.in-berlin.de/doc/mysql-doc...l_Charset.html
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 28/08/2011, 04:01
Avatar de Alvaro_Franz  
Fecha de Ingreso: mayo-2011
Mensajes: 84
Antigüedad: 8 años, 6 meses
Puntos: 4
Respuesta: Utf8 vuelve a dar problemas - Insertando datos en Mysql

Muchas gracias por la información, utilizaré el utf8_unicode_ci para mis artículos en alemán.

Se ha solucionado perfectamente con SET NAMES (investigaré qué hace). Por otro lado, veo que en la base de datos se guardan los caracteres con acentos tal y cuál, siempre me ha hechado para atrás ver que no están en su respectivo HTML, ¿es normal, o al menos fiable que se guarden así?

Gracias por todo.
__________________
La verdadera libertad consiste en dominarse a uno mismo

Etiquetas: mysql, vuelve, formulario, utf-8
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




La zona horaria es GMT -6. Ahora son las 23:38.