Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Collation para idioma japonés

Estas en el tema de Collation para idioma japonés en el foro de PHP en Foros del Web. Buenas, estoy desesperado con este tema... Tengo un formulario en una página PHP con charset=utf-8, guardada como UTF8 sin BOM y añado los datos a ...
  #1 (permalink)  
Antiguo 25/02/2014, 18:02
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Collation para idioma japonés

Buenas, estoy desesperado con este tema...

Tengo un formulario en una página PHP con charset=utf-8, guardada como UTF8 sin BOM y añado los datos a una base de datos mySQL mediante utf8_decode para evitar problemas con acentos y letras como la ñ y demás. El caso es que el formulario lo puede rellenar un japonés también y ahí empieza el lío...

La base de datos está cotejada en utf8_general_ci al igual que cada columna de la tabla. Pues bien, cuando envío el formulario, si envío un campo en japonés es imposible que me lo guarde correctamente. En lugar del texto en japonés me guarda interrogaciones así --> ?????????. En cambio, si escribo directamente la palabra en japonés en la base de datos, se guarda perfectamente...

¿Hay algo que me esté pasando por alto????? Ya no sé que hacer! No sabía si poner esto aquí o en PHP porque no tengo muy claro donde está el problema...

Gracias.
  #2 (permalink)  
Antiguo 25/02/2014, 18:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Collation para idioma japonés

Cita:
La base de datos está cotejada en utf8_general_ci al igual que cada columna de la tabla. Pues bien, cuando envío el formulario, si envío un campo en japonés es imposible que me lo guarde correctamente. En lugar del texto en japonés me guarda interrogaciones así --> ?????????. En cambio, si escribo directamente la palabra en japonés en la base de datos, se guarda perfectamente...
SI la base puede guardarlo correctamente, pero a través del formulario no, el problema no es la base, ni el SQL. Es de PHP, y en todo caso podría ser de la conexión, que también es de PHP.

Movido a PHP
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/02/2014, 19:15
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Collation para idioma japonés

Si la página y tus tablas están en utf8, entonces el causante del problema es utf8_decode, que los convierte a iso; lee el manual: http://www.php.net/manual/es/function.utf8-decode.php
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 26/02/2014, 02:05
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Collation para idioma japonés

Gracias por las respuestas, miraré lo que me decís y ya os cuento.

Lo que no entiendo de todo esto es que si todo lo tengo en utf-8, ¿por qué tengo que usar en PHP utf8_encode o utf8_decode para que los datos me los guarde correctamente sin rpoblemas en la base de datos? ¿Es debido a que el propio lenguaje PHP no está en utf8 y también hay que indicárselo de alguna manera?
  #5 (permalink)  
Antiguo 26/02/2014, 03:16
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Collation para idioma japonés

Sí, se nota que no has entendido, si tienes todo en utf-8 NO necesitas utf8_encode() ni utf8_decode(). De hecho, en las nuevas versiones de PHP se están modificando la mayoría de las funciones para trabajar directamente con utf8, aunque hay otras que tienen alternativas, por ejemplo:

Longitud de caracteres para iso-8859-1 y similares: strlen()
Longitud de caracteres para utf-8 y otras codificaciones multibyte: mb_strlen()

Para más info, lee el manual: http://www.php.net/manual/es/function.strlen.php
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 26/02/2014, 04:41
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Collation para idioma japonés

Claro, de ahí el problema y mi duda. Si todo está en utf8, incluso la base de datos, si no uso utf8_decode me guarda mal los caracteres. Por lo tanto, si como me comentas, no debería usar utf8_decode ni utf8_encode algo debo tener mal y no se el qué! Comedura de coco!
  #7 (permalink)  
Antiguo 26/02/2014, 12:07
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Collation para idioma japonés

Por fin lo solucioné! A parte de tener todo en UTF8 y demás usé esta sentencia que "fuerza" a la base de datos a usar utf8:

Código MySQL:
Ver original
  1. $conectaI = ...... conexión que tengamos.
  2.  
  3. mysqli_query($conectaI,"SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");

Ahora me guarda en cualquier idioma correctamente. Y por supuesto ya los utf8_encode y utf8_decode ya sobran. Jeje, menos mal!

Un saludo.

Etiquetas: campo, idioma, mysql, sql, tabla
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 05:17.