Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

UTF8 en aplicación

Estas en el tema de UTF8 en aplicación en el foro de Mysql en Foros del Web. Alguien sabe como codificar bien los caracteres utf8 de la base de datos al hacer un select desde phpmyadmin por ejemplo, mi problema es que ...
  #1 (permalink)  
Antiguo 31/08/2011, 05:11
Avatar de manuga87  
Fecha de Ingreso: febrero-2010
Ubicación: Sevilla
Mensajes: 59
Antigüedad: 14 años, 2 meses
Puntos: 6
UTF8 en aplicación

Alguien sabe como codificar bien los caracteres utf8 de la base de datos al hacer un select desde phpmyadmin por ejemplo, mi problema es que al hacer consultas o informes directamente en BD me aparecen los caracteres que en realizad formas la tilde o las 'ñ' pero no se como codificarlos en una select para que aparezcan bien.

Ejemplo (esto es lo que guarda la aplicación en BD)

NAVARRO MILLÃN, SERGIO

Debería ser un función que devuelva bien codificado para la persona ese nombre.

NAVARRO MILLÁN, SERGIO
  #2 (permalink)  
Antiguo 31/08/2011, 05:17
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 11 meses
Puntos: 261
Respuesta: UTF8 en aplicación

Imagino que lo que tendrás que codificar el el paso intermedio.
Desde donde viene los datos, un formulario?
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #3 (permalink)  
Antiguo 31/08/2011, 05:24
Avatar de manuga87  
Fecha de Ingreso: febrero-2010
Ubicación: Sevilla
Mensajes: 59
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: UTF8 en aplicación

Pues lo datos entran desde un formulario en un aplicación web, el tema está en que desde html o PHP solo le dice que lo interprete como utf8 y aparece correcto pero directamente desde la BD aparecen tal y como están codificados.
  #4 (permalink)  
Antiguo 31/08/2011, 05:37
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 11 meses
Puntos: 261
Respuesta: UTF8 en aplicación

Entonces el tema está en eso mismo. Para verlos en la DB igual que en la aplicación necesitas, además de que esté todo codificado en UTF-8, archivos, charset, base de datos, también la operación de inserción y toma de datos.

En el caso de ser php, se debe utilizar la función utf8_encode para mostrar los datos y utf8_decode para insertalos.

De esta forma verás los datos igual en la aplicación y directamente en consultas a la db.
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #5 (permalink)  
Antiguo 31/08/2011, 05:45
Avatar de manuga87  
Fecha de Ingreso: febrero-2010
Ubicación: Sevilla
Mensajes: 59
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: UTF8 en aplicación

Al insertar directamente desde la aplicación a BD se produce esa codificación que es correcta y al consultar desde PHP se hace lo contrario y aparece bien, hasta ahí está todo bien pero si te vas a phpmyadmin aparecen dichos caracteres los cuales están correctos así que no puedo meter una tilde tal cual en la BD para que si hago una consulta directamente desde phpmyadmin aparezca.

Debe haber alguna función para ello o directamente no la hay
  #6 (permalink)  
Antiguo 31/08/2011, 06:41
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 11 meses
Puntos: 261
Respuesta: UTF8 en aplicación

Pues la verdad es que desconozco si SQL tiene alguna función para codificar los carácteres en las consultas (me atrevería a decir que no). Pero hasta la fecha, y por lo que se plantea muchas veces en el foro, esto se soluciona como he comentado.

Como comentas, es correcta la consulta que realiza ahora mismo, pues se codifica en las dos direcciones.

Por ejemplo:
Guardas Páco a través del form.
En la base de datos se guarda Páco
Al consultar con PHP vuelve a codificar y muestra Páco
Pero si consultas directamente a la DB mostrará Páco

Con la función de PHP, como comentaba, sería de la siguiente forma:
Del form recibimos la variable
Código PHP:
Ver original
  1. // Variable recibida
  2. $_POST['name'] = 'Páco';
  3.  
  4. // La pasamos por la función
  5. $name = utf8_decode($_POST['name']);
  6.  
  7. // Realizas las validaciones pertinentes
  8. // La variable $name se pasa al INSER INTO

Al consultar con PHP se hace de forma similar.
Código PHP:
Ver original
  1. // Codificamos las variables del array
  2. $query = "SELECT bla bla bla"
  3. $result = mysql_query($query);
  4. $row = mysql_fetch_array($result);
  5. // Edito: Había puesto decode tambien, es encode...
  6. $codificada = utf8_encode($row['name']);
  7. $echo $codificada;
Esto debería mostrar Páco, que es el valor que está en la Db

Si revisamos la DB, podemos ver que ha guardado el valor tal cual se escribió. Y si se hace una consulta directamente a la db, mostrará el valor real que en la db, que será Páco.

No se si es exactamente lo que buscas, pero me temo que van por ahí los tiros.

Un saludo,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight

Última edición por Uncontroled_Duck; 31/08/2011 a las 11:36

Etiquetas: 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 08:40.