Etiqueta: utf8

¿Cómo arreglar el problema de las tildes y la eñe en WordPress?

Luego de haber retomado el blog me encontré con un problema: Había un monton de caracteres raros en todo lugar donde antes tenía una tilde o una “eñe”, luego de investigar un poco encontré que le habían cambiado el collation a la base de datos de mi blog.

Así el collation que tenía mi blog decía “latin1_swedish_ci” y yo no entendía el motivo, recurriendo a la documentación pude ver el motivo
https://dev.mysql.com/doc/refman/5.6/en/charset-collation-effect.html

Básicamente mi contenido fué creado con un set de caracteres y al tener la base de datos con un collation distinto pues se hizo todo el embrollo, para solucionarlo tenemos que modificar y poner el set correcto, mi recomendación es utilizar UTF-8

Así que vamos paso a paso con la solución que dicho sea de paso también sirve para MariaDB.

Lo primero es que saques un backup completo de tu base de datos antes de empezar a trabajar, mejor prevenir que lamentar 🙂

Abres una consola de MySQL en tu línea de comandos, PHPMyAdmin o el gestor de tu preferencia y ejecutas este query SQL

ALTER DATABASE nombre_de_la_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Eso te asegura que cuando se cree una nueva tabla se haga con la codificación correcta, ahora nos toca trabajar en las tablas
ALTER TABLE nombre_de_la_tabla CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Ahora nos toca arreglar las tablas de forma individual, el truco es hacer un dump y luego restaurarlas con el set correcto.
mysqldump -p –default-character-set=utf8 nombre_de_la_db nombre_de_la_tabla > tabla_corregida.sql

Y luego la restauramos con
mysql -p base_de_datos < tabla_corregida.sql

Y eso es todo!

Solución alternativa
Si te da miedo manipular las tablas entonces puedes intentar reemplazar los caracteres malos usando UPDATE

Por ejemplo si quieres arreglar todas las eñes de tus posts tendrías que ejecutar algo como esto:
UPDATE wp_posts SET post_title = REPLACE(post_title, "ñ", "ñ");
UPDATE wp_posts SET post_content = REPLACE(post_content, "ñ", "ñ");

En este ejemplo estoy cambiando tanto el título como el contenido del post, hay más campos y puede ser un poco más tedioso pero si te da más confianza hacerlo así pues adelante.

Que es UTF-8?

La respuesta corta es: UTF-8 es un formato para codificar caracteres Unicode utilizando secuencias de bytes.

Y qué es Unicode?
Probablemente muchos de ustedes hayan oí­do hablar de los sistemas de codifiación, los que hablamos español estamos muy acostumbrado al famoso ASCII si, ese que nos ayuda a sacar las tildes 😛

Pues asi como el ASCII hay muchí­simos sistemas de codificación que lo usan en otros idiomas e incluso un mismo idioma puede tener varios sistemas de codificación que varí­a por la plataforma en la que se ejecuta. Y como hacemos para arreglar todo este embrollo? como hago para poder ver páginas de anime japonés con sus caracteres reales y no solamente unos cuadrados? como hacen los hebreos para poder leer correctamente algo en francés o ruso? La respuesta a todo es Unicode!

Unicode proporciona un número único para cada carácter, sin importar la plataforma, sin importar el programa, sin importar el idioma.


Creative Commons License photo credit: sillygwailo
Dicho todo esto, volvamos con UTF-8 !

UTF-8 se lo debemos al maestro Ken_Thompson, si uno de los genios detrás de Unix y el creador de Plan 9

UTF-8 usa grupos de bytes para representar el estándar de Unicode para los alfabetos de muchos de los lenguajes del mundo. Es especialmente útil para la transmisión sobre sistemas de correo de 8 bits.

Usa de 1 a 4 bytes por carácter, dependiendo del sí­mbolo de Unicode. Por ejemplo, se necesita un solo byte en UTF-8 para codificar los 128 caracteres US-ASCII en el rango U+0000 a U+007F de Unicode.

Para todos aquellos que tenemos necesidad de programar usar UTF-8 nos ha servido para aliviar muchí­simos dolores de cabeza, especialmente para los que hablamos español y tenemos necesidad de colocar tildes y algunos caracteres especiales, y muchas veces tení­amos que hacerlo con software que no contemplaban esas posibilidades. Ahora casi todo el software que usamos y que tiene que ver con manipulación de documentos soportan este formato.

Para los que son webmasters UTF-8 es especialmente importante porque les ahorrará muchos problemas con los navegadores, webservers y las aplicaciones que escriban.

Si quieres verificar que tú sistema y navegador soportan UTF-8 (lo raro serí­a que no lo soporte) puedes abrir este archivo de texto :
http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

Si ves todos los caracteres no tienes problemas, pero si ves puros cuadrados o caracteres sin ningún tipo de secuencia lógica entonces estas usando un sistema de codificación alterno como ISO-8859-1 busca en tu navegador y lo cambias, aunque mi blog esta codificado para UTF-8 y le avisa al browser que deberí­a de utilizar UTF-8 para interpretar todo.