Ayer se me presentó un problema de tildes, tanto en la base de datos como en la vista conectada a ella. Aparentemente, todo estaba correctamente, los archivos poseían el meta respectivo en el <head>:
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
Y en la base de datos, al notar que se estaban guardando los datos con caracteres "extraños", cambié el cotejamiento de caracteres, tanto para la base de datos, las tablas como para los campos, a utf8_general_ci, y en el archivo de conexión del php, en la siguiente línea posterior a la conexión, agregué:
@mysql_query("SET NAMES 'utf8'")
En el CMS todos los caracteres aparecían correctamente, en la base de datos igualmente, pero en la vista nada. Probé utilizando:
utf8_encode (http://www.php-es.com/function.utf8-encode.html)
Pero nada. Así que investigando, me topé con una función que me "salvó la vida" y que coloco a continuación.
<?php function _convert($content) {
if(!mb_check_encoding($content, 'UTF-8')
OR !($content === mb_convert_encoding(mb_convert_encoding($content, 'UTF-32', 'UTF-8' ), 'UTF-8', 'UTF-32'))) {
$content = mb_convert_encoding($content, 'UTF-8');
if (mb_check_encoding($content, 'UTF-8')) {
// log('Converted to UTF-8');
} else {
// log('Could not converted to UTF-8');
}
}
return $content;
} ?>
(Sacada de: http://php.net/manual/es/function.utf8-encode.php)
Utilizando esta función en la muestra de resultados de las consultas a la base de datos, por fin pude resolver el problema con las tildes, eñes y caracteres UTF-8.