Tabla de contenidos
Si te salen caracteres raros en tu web como un rombo con un signo de interrogación en todas las ñ, acentos y demás caracteres hispanos, en este tutorial voy a explicarte como corregirlo.
Como arreglar el problema con la ñ y los acentos en mi web si el problema es del servidor MySQL
Lo primero que hice fue ver si mi nuevo servidor estaba por defecto en UTF-8
Y con el siguiente comando desde SSH pude comprobarlo
mysqladmin -u root -p var | grep -E 'character|collation' | tr -s ' '
Me pidió el password, se lo puse y me salió esto:
Ahí ya puede comprobar que no estaba bien la configuración por defecto así y me dispuse a solucionarlo.
Esta solución funciona en este caso en concreto y con el tipo de caracteres que has visto antes, lo digo por que los problemas de codificación a veces es por la base de datos otra por la configuración de los archivos y otras por la configuración del CMS. Yo me he encontrado en mi trayectoria errores de muchos tipos y distintas formas de solucionarlos, así que se precavido a la hora de aplicar cambios, y si no estás seguro y no tienes experiencia como administrador de sistemas es mejor que contrates a uno que te solucione el asunto.
Dicho esto, para darle la solución al problema de caracteres en MariaDB y en algunos casos de MySQL hay que añadir la siguiente línea en /etc/my.cnf en la siguiente línea de donde pone [mysqld]
Poner
character-set-server=utf8
Quedando de la siguiente forma:
Fíjate bien si el archivo no cuenta ya con una línea de este tipo, si es así lo que tendrías que hacer es editarla y ponerla de la forma que os he indicado.
A continuación hay que reiniciar el servidor desde SSH con el siguiente comando:
service mysql restart
Y ya tenemos bien configurado el sistema de caracteres UTF-8 para nuestro MySQL o MariaDB para nuestro servidor, por lo menos en el caso de OVH.
El resultado es que ya me coge los acentos perfectamente cómo puedes ver a continuación.
Corregir el problema de los acentos con consultas SQL
En otras ocasiones he me he visto en la necesidad de hacer una consulta SQL para arreglar el problema de la ñ y acentos. La consulta la copio de este post:
UPDATE table_name SET column_name = REPLACE(column_name ,'á','á');
UPDATE table_name SET column_name = REPLACE(column_name ,'ä','ä');
UPDATE table_name SET column_name = REPLACE(column_name ,'é','é');
UPDATE table_name SET column_name = REPLACE(column_name ,'í©','é');
UPDATE table_name SET column_name = REPLACE(column_name ,'ó','ó');
UPDATE table_name SET column_name = REPLACE(column_name ,'íº','ú');
UPDATE table_name SET column_name = REPLACE(column_name ,'ú','ú');
UPDATE table_name SET column_name = REPLACE(column_name ,'ñ','ñ');
UPDATE table_name SET column_name = REPLACE(column_name ,'í‘','Ñ');
UPDATE table_name SET column_name = REPLACE(column_name ,'Ã','í');
UPDATE table_name SET column_name = REPLACE(column_name ,'–','–');
UPDATE table_name SET column_name = REPLACE(column_name,'’','\'');
UPDATE table_name SET column_name = REPLACE(column_name,'…','…');
UPDATE table_name SET column_name = REPLACE(column_name,'–','-');
UPDATE table_name SET column_name = REPLACE(column_name,'“','"');
UPDATE table_name SET column_name = REPLACE(column_name,'â€','"');
UPDATE table_name SET column_name = REPLACE(column_name,'‘','\'');
UPDATE table_name SET column_name = REPLACE(column_name,'•','-');
UPDATE table_name SET column_name = REPLACE(column_name,'‡','c');
UPDATE table_name SET column_name = REPLACE(column_name ,'Â','');
En estas consultas tienes que cambiar table_name por el nombre de la tabla que vas a modificar y column_name por la columna.
Corregir acentos por la parte de WordPress
Si usas WordPress y no tienes acceso a la configuración del servidor ¿Cómo puedes arreglar el problema de los acentos? También hay una solución alternativa que es cambiar la codificación por defecto de WordPress de utf8 a latin1. Para hacer esto tienes que es editar el archivo wp-config.php de tu WordPress y donde pone:
define('DB_CHARSET', 'utf8');
Poner:
define('DB_CHARSET', 'latin1');
Espero que al que haya visto este pequeño tutorial le haya servido y si alguien tiene alguna duda, me pueden contactar por el correo electrónico o dejándome un comentario.