Saltar al contenido

Como arreglar problemas con la ñ y los acentos en Mysql

problemas acentos mysql

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.

error ñ y acentos en la web

Advertencia: Este proceso puede dañar la integridad de tu sitio web, así que hazlo con mucho cuidado y siempre haciendo copia de seguridad antes.

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:

distintos sistemas de caracteres

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:

mysql utf8

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.

Problema corregido con la ñ mysql

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.

Compartir este Articulo