Estoy programando un proyecto e iba de lujo, hasta que extraigo los datos de mi bd y hago un echo
para mostrar el nombre del usuario. Al verificar la información en mi navegador, me di cuenta que, la información no se estaba mostrando correctamente. Verifico la BD y el nombre está guardado correctamente, es decir, sin ?
o signos raros.
Tengo un nombre almacenado (JESÚS) y me muestra JES?S
. Lo más raro es, que cuando escribo tildes o la letra ñ
directamente en mi HTML
, el navegador las muestra sin problemas. Cuando debugeo, utilizo FirePHP4Chrome, y veo el resultado de la query por la consola y lo reviso {run_usu: "777", nom_usu: "JESÚSÑÑ", apa_usu: "PARRA", ama_usu: "VEGA", cel_usu: null, …}
, no me arroja ningún desperfecto (?*_), pero cuando hago el echo con php a la variable, nace el error.
Estuve investigando, y existe la opción SET CHARSET
con el objeto creado de mysql. Después, hago un character_set_name
y me devuelve latin1. He intentado cambiarlo, desde php (con el método comentado) y cambiandolo desde el modelador (mysqlworkbench), pero aún así, me sigue retornando latin1... ¿será eso?.
Algunos datos interesantes que puedan ayudar:
1. Mi BD está en utf8_default(modelada con mysqlworkbench).
2. Estoy usando xampp 7.2.11(mysql, aunque el servidor ahora trabaja con mariadb).
3. Los ficheros php, dentro de su header, tienen el meta utf8
.
Me despido y espero una respuesta.
Saludos!
EDIDATO: Al parecer, era el "collation"(colación) de la BD. La especifiqué en utf8_unicode_ci
. Luego, al objeto $mysqli
le apliqué su método set_charset("utf8");
Solucionado.