La conversión de la codificación de caracteres en una base de datos de WordPress puede ser un proceso delicado, pero es esencial para evitar problemas con caracteres extraños, errores de visualización y compatibilidad con idiomas internacionales. En este artículo, se explica paso a paso cómo convertir correctamente la codificación de la base de datos de WordPress MySQL o MariaDB.
1. Importancia de la conversión de caracteres en WordPress
En versiones anteriores a WordPress 2.1.3, la mayoría de las bases de datos utilizaban el conjunto de caracteres latin1 y la colación latin1_swedish_ci por defecto. A partir de WordPress 2.2, se introdujo la posibilidad de definir la codificación en el archivo wp-config.php
, siendo UTF-8 la opción recomendada.
Sin embargo, cambiar la codificación en wp-config.php
no altera automáticamente las tablas y columnas existentes, lo que puede generar problemas al recuperar o guardar datos.
2. Pasos previos a la conversión
Antes de comenzar la conversión, es imprescindible hacer una copia de seguridad de la base de datos. Se recomienda seguir estos pasos:
✅ Exportar la base de datos usando phpMyAdmin o el comando mysqldump
.
✅ Crear un entorno de pruebas donde se pueda verificar la conversión antes de aplicarla al sitio en producción.
✅ Identificar la codificación actual de la base de datos y las tablas mediante phpMyAdmin o con el siguiente comando SQL:
SELECT schema_name, default_character_set_name FROM information_schema.schemata;
3. Convertir la codificación de la base de datos a UTF-8
3.1. Cambiar la codificación de la base de datos
El siguiente comando cambia el conjunto de caracteres y la colación de la base de datos:
ALTER DATABASE nombre_base_de_datos CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
🔹 Nota: Esto solo afectará a nuevas tablas, pero no a las existentes.
3.2. Convertir la codificación de las tablas
Para actualizar las tablas existentes, usa el siguiente comando para cada tabla:
ALTER TABLE wp_posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
🔹 Repite este comando para todas las tablas de la base de datos, reemplazando wp_posts
por el nombre de cada tabla.
3.3. Convertir la codificación de las columnas
Cada columna con datos en formato texto (TEXT
, VARCHAR
, LONGTEXT
, etc.) debe ser convertida. Usa el siguiente comando para cada columna:
ALTER TABLE wp_posts CHANGE post_content post_content LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
🔹 Importante: Si tienes ENUM o VARCHAR, asegúrate de especificar la longitud correcta:
ALTER TABLE wp_users CHANGE user_email user_email VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Para columnas ENUM
, especifica los valores permitidos:
ALTER TABLE wp_comments CHANGE comment_subscribe comment_subscribe ENUM('Y','N') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'N';
4. Método alternativo: Conversión mediante BLOB
Si después de la conversión los caracteres siguen viéndose incorrectamente, usa el método BLOB para evitar la corrupción de datos:
ALTER TABLE wp_posts CHANGE post_content post_content LONGBLOB;
ALTER TABLE wp_posts CHANGE post_content post_content LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
🔹 Este método convierte temporalmente los datos a un formato binario (BLOB) antes de cambiarlos nuevamente a texto, evitando pérdidas de información.
5. Conversión con mysqldump
(recomendado para grandes bases de datos)
Si tienes acceso a la consola, puedes exportar la base de datos en formato latin1 y luego importarla en formato utf8mb4:
mysqldump -u usuario -p --default-character-set=latin1 nombre_base > backup.sql
Luego, importa el archivo convertido a UTF-8:
mysql -u usuario -p --default-character-set=utf8mb4 nombre_base < backup.sql
🔹 Este método garantiza que los caracteres sean leídos correctamente antes de la conversión.
6. Actualizar wp-config.php
Después de completar la conversión, edita el archivo wp-config.php
y verifica que las siguientes líneas estén configuradas correctamente:
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', 'utf8mb4_unicode_ci');
🔹 Si tu sitio usa emojis u otros caracteres especiales, UTF-8MB4 es la mejor opción.
7. Pruebas y verificación de la conversión
Para asegurarse de que todo funciona correctamente:
✅ Revisar los datos en phpMyAdmin: ¿Se ven correctamente los caracteres especiales?
✅ Añadir texto en diferentes idiomas en un post de prueba y verificar su correcta visualización.
✅ Verificar la base de datos:
SELECT post_content FROM wp_posts WHERE post_content LIKE '%áéíóúñ%';
Si los caracteres siguen mostrándose incorrectamente, intenta limpiar la caché o revisar si hay plugins interfiriendo con la codificación.
8. Consideraciones finales
🔹 Siempre haz una copia de seguridad antes de modificar la base de datos.
🔹 Realiza pruebas en un entorno de desarrollo antes de aplicar los cambios en producción.
🔹 Si sigues teniendo problemas, considera actualizar MySQL a la última versión disponible.
Conclusión
La conversión de la base de datos de WordPress a UTF-8 es fundamental para garantizar compatibilidad con múltiples idiomas y evitar errores de codificación. Siguiendo estos pasos, podrás realizar la conversión de manera segura y efectiva, asegurando que tu sitio web funcione correctamente sin perder datos. 🚀
vía: Codex WordPress