Caracteres extraños con MySQL y PHP al usar HTML

En este post voy a mostrar cómo solucioné un error que me estaba fastidiando demasiado y que tenía tiempo que no me sucedía.

Resulta que al estar trayendo datos de una base de datos con MySQL y PHP se mostraban caracteres raros con signos de interrogación cuyo char code es 65535:

Como se puede apreciar en la imagen, no muestra letras con acento y al usar json_encode tampoco devuelve nada.

Cabe mencionar que en el head de mi HTML todo estaba correcto con el meta:

<meta charset="UTF-8">

Y el charset de mi base de datos con mi tabla ya lo había cambiado desde utf8_spanish_ci a otros. Ya estaba enloqueciendo hasta que dije:

¿Cómo es que en otros proyectos esto no me pasa?

Así que revisé mi plantilla en GitHub y afortunadamente ahí estaba la respuesta:

SET NAMES 'utf8';

No sé cómo funciona ni de qué se trata, pero antes de eso tenía mi PDO así:

Después lo hice así:

¡Magia pura! ahora sí funcionaba:

Si ves el botón un poco raro es porque estoy depurando el objeto con json_encode. El punto es que ahora sí funciona.

Por cierto, si quieres, puedes ver un tutorial de PHP con PDO y varios motores de búsqueda.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

3 comentarios en “Caracteres extraños con MySQL y PHP al usar HTML”

  1. En todos mis proyectos tocaba pelearme con los dichosos carácteres, que si ISO, UTF, formato BBDD, ficheros …. todo aguantándose con pinzas. Migro mi proyecto más grande de servidor y otra vez con los problemas de carácteres … hasta que llegué aquí 🙂

Dejar un comentario