Error con acentos y eÑes en PHP/MySQL
Cuando desarrollamos un sitio web con cualquier lenguaje de programación, nos encontramos con un problema recurrente al introducir y mostrar palabras, las cuales acaban apareciendo de formas similares a “áóñ”. En esta entrada exploraremos las diferentes soluciones, para resolver el problema de acentos y eñes en PHP/MySQL.
Primeramente, debemos conocer cuál es el origen del problema. Debemos saber que la configuración del cotejamiento de caracteres especiales como acentos y eñes, entre otros símbolos no es el mismo entre el gestor de base de datos MySQL y el lenguaje de programación (PHP) utilizado en el Servidor (Apache).
Solución al Problema
- Configurar la base de datos: Al crear la base de datos MySQL, asegúrate que los campos string y demás esten en utf8_spanish_ci y el cotejamiento de las tablas en utf_unicode_ci (más tarde en Operations > Collation de phpMyAdmin se puede cambiar)
- Modificar etiqueta
<head>
: Debemos agregar la propiedad charset=utf-8 en el atributo conent.
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- Modificar los punteros PHP: Los punteros que muestran XML, llamadas de AJAX, APIs, etc.
header("Content-Type: text/html;charset=utf-8");
- Cadena de conexión: Indicar en la cadena de conexión entre PHP con MySQL el tipo de chartset a recibir.
mysql_query("SET NAMES 'utf8'");
En la versión 5 de PHP donde se usa MySQLi debe usarse:
$acentos = $db->query("SET NAMES 'utf8'");
Haciendo estos pasos se solucionará cualquier problema de codificación de caracteres. Si deseas más información, puedes revisar la entrada original, dando clic aquí.