Mi aplicacion de Qt tiene problemas para leer la Ñ de una base de datos?
-
Tengo una base de datos en la cual hay información con palabras en español y cuando las recupero por Qt y las pego en un Combobox me salen palabras distorsionadas. Que podría hacer?
-
Hola
Así es difícil saber. ¿Qué motor de bases de datos es MySQL, SQlite....? ¿La hiciste tu? ¿Qué tipo de codificación de caracteres tiene? Si la abres con otro programa ¿se ven bien? ¿Como recuperas los datos de la base de datos?....
Un saludo
-
Hola @Eduardo12l
@Eduardo12l said in Mi aplicacion de Qt tiene problemas para leer la Ñ de una base de datos?:
@juanki La BD es MySQL que, previamente, ha recuperado datos de un worksheet de Excel. Es decir los datos van: Excel --> MySQL --> Qt
¿Los datos en la tabla de Excel se visualizan correctamente? ¿Has comprobado que el paso de Excel a MySql se realice correctamente? Si abres la tabla de MySql con otro programa, por ejemplo phpmyadmin, ¿Se ve correcta? ¿Qué tipo de codificación de caracteres tiene la base de datos MySql?
Un saludo
-
@juanki Hola disculpa por la tardanza. Pues a ver:
- Si los datos del Excel están correctamente escritos.
- Veo los datos del MySQL están correctamente escritos, idénticos al Excel. Yo descargue la aplicación de MySQL para exportar a Excel.
- No tengo otro programa que pueda abrirlo.
- ¿Cómo averiguo la codificación de caracteres que tiene la base de datos de MySQL?
-
Hola @Eduardo12l
Para ver la base de datos y comprobar como se ven los datos puedes usar algún programa como HeidiSQL o phpmyadmin. Con esos mismos programas podrás consultar toda la configuración de la base de datos.
Un saludo
-
@juanki Hola que tal. Revise el HeidiSQL y en la pestaña de Datos aparecen todas las palabras como deberian ser, es decir, con tildes y Ñ.
Y cuando reviso en la pestaña Host 127.0.0.1 -> Variables, aparece como character_set_client utf8mb4 y en varios otros también, excepto en character_set_Database donde sale utf8. -
Ya encontre el metodo , suponte que tienes esto:
a = query1.value(query1.record().indexOf("Profesor")).toString(); /*Suponte que uno de tus profesores se llama FÉRNANDO*/
Ese query va a ser incapaz de leer eso, solo va a mostrar 'FÉRNANDO'
La solucion es la siguiente:a = query1.value(query1.record().indexOf("Profesor")).toString(); //es la misma de arriba a = a.toLocal8Bit(); // Eh aquí la diferencia