Configurar charset UTF-8 en base de datos MySQL para PrestaShop
¡Hola! Soy tu técnico de soporte amigable. Hoy vamos a resolver una de las tareas más importantes para que tu tienda PrestaShop funcione correctamente con caracteres especiales, acentos, eñes y símbolos de diferentes idiomas: configurar el charset UTF-8 en tu base de datos MySQL.
Este proceso es esencial, especialmente si vendes en varios países, usas caracteres como ñ, tildes, o incluso emojis en descripciones de productos. No te preocupes, te guiaré paso a paso, como si lo hiciera contigo al lado. Vamos allá.
¿Qué es charset UTF-8 y por qué es vital para PrestaShop?
Imagina que tu base de datos es una gran biblioteca. Cada libro (dato) tiene un idioma. Si la biblioteca solo entiende un idioma (por ejemplo, inglés básico), cuando intentes guardar un libro en español con acentos o una palabra en japonés, se producirán errores: verás símbolos raros como ñ, é o signos de interrogación.
UTF-8 es el "idioma universal" de los ordenadores. Permite almacenar y mostrar correctamente cualquier carácter de cualquier idioma del mundo: español, francés, chino, árabe, etc. PrestaShop, al ser una plataforma multilingüe, necesita UTF-8 para que tus productos, descripciones, nombres de categorías y direcciones de clientes se vean perfectos.
Si tu base de datos no está en UTF-8, podrías experimentar:
- Errores al importar productos con caracteres especiales.
- Textos mostrados como "????" o caracteres extraños.
- Problemas al enviar correos electrónicos con tildes.
- Dificultades en la indexación SEO (Google penaliza contenido mal codificado).
Por eso, configurar charset UTF-8 en MySQL para PrestaShop no es opcional, es obligatorio.
Paso 1: Verificar el charset actual de tu base de datos
Antes de cambiar nada, debemos saber en qué estado está tu base de datos. Hay dos formas de hacerlo:
1.1 Desde phpMyAdmin (el método más fácil)
- Accede a phpMyAdmin desde tu panel de control (cPanel, Plesk, Syspanel, etc.). Normalmente está en
tudominio.com/phpmyadmin. - En el menú izquierdo, selecciona la base de datos de tu PrestaShop.
- Haz clic en la pestaña "Operaciones" (Operations).
- Busca la sección "Collation" (Cotejamiento). Debería aparecer algo como
utf8_general_cioutf8mb4_general_ci. Si veslatin1_swedish_cio similar, no está en UTF-8.
1.2 Desde la línea de comandos (SSH)
Si tienes acceso SSH, puedes ejecutar:
SHOW CREATE DATABASE nombre_de_tu_base;
O para ver todas las tablas:
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = 'nombre_de_tu_base';
[INFO] Si no sabes qué es SSH, quédate con phpMyAdmin. Es más visual y seguro para principiantes.
Paso 2: Cambiar el charset de la base de datos a UTF-8
Ahora sí, vamos a configurar charset UTF-8 MySQL PrestaShop. Hay dos niveles: la base de datos en sí y las tablas. Lo ideal es cambiar ambos.
2.1 Cambiar el charset de la base de datos
Desde phpMyAdmin:
- Selecciona tu base de datos.
- Ve a Operaciones.
- En Collation, elige
utf8mb4_general_ci(recomendado para PrestaShop 1.7+ y 8.x) outf8_general_ci(para versiones antiguas). ¿Por qué utf8mb4? Porque soporta emojis y caracteres de 4 bytes, como algunos símbolos chinos. - Haz clic en "Continuar". ¡Listo! La base de datos ahora tiene el charset correcto.
2.2 Cambiar el charset de todas las tablas
Este paso es crucial, porque las tablas pueden tener su propio charset heredado. Para cambiarlas todas de golpe:
Desde phpMyAdmin:
- Selecciona tu base de datos.
- Ve a la pestaña "SQL".
- Copia y pega esta consulta (reemplaza
tu_basepor el nombre real):
ALTER DATABASE tu_base CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS query
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'tu_base' AND TABLE_TYPE = 'BASE TABLE';
La segunda parte genera una lista de comandos para cada tabla. Copia esos comandos generados y pégalos de nuevo en SQL para ejecutarlos. O, si prefieres, usa esta consulta directa (más rápida):
ALTER DATABASE tu_base CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE tu_base.carrier CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- Repite para cada tabla, o usa un script. Mejor aún, usa la opción de phpMyAdmin "Cambiar collation de todas las tablas" si está disponible.
[WARNING] Haz una copia de seguridad antes de ejecutar cualquier ALTER. Si algo sale mal, podrías perder datos. En Syspanel, puedes hacer backups desde la sección "Backups" o usando phpMyAdmin exportando la base.
Paso 3: Ajustar la configuración de PrestaShop
Una vez que la base de datos está en UTF-8, debemos decirle a PrestaShop que use ese charset. Esto se hace en el archivo parameters.php (o settings.inc.php en versiones antiguas).
3.1 Localizar el archivo de configuración
El archivo se encuentra en:
- PrestaShop 1.7 y 8.x:
/app/config/parameters.php - PrestaShop 1.6 y anteriores:
/config/settings.inc.php
Conéctate por FTP o desde el administrador de archivos de tu panel (Syspanel, cPanel, etc.).
3.2 Editar la configuración
Busca una línea que contenga 'database_engine' o directamente la configuración de la base de datos. Deberías ver algo como:
'database_host' => 'localhost',
'database_name' => 'tu_base',
'database_user' => 'usuario',
'database_password' => 'contraseña',
'database_prefix' => 'ps_',
Añade o modifica estas líneas (si no existen, agrégalas dentro del array):
'database_charset' => 'utf8mb4',
'database_collation' => 'utf8mb4_general_ci',
Guarda el archivo. Importante: Si usas PrestaShop 1.6, busca define('_DB_CHARSET_', 'utf8'); y cámbialo a 'utf8mb4' si tu MySQL lo soporta.
3.3 Verificar la conexión
Accede a tu tienda y revisa que no haya errores. Si ves un mensaje de "Error de conexión a la base de datos", revisa que los datos sean correctos. Puedes probar desde el back office: Parámetros de tienda > Rendimiento y forzar la compilación de plantillas.
Paso 4: Comprobar que todo funciona correctamente
Hagamos una prueba rápida:
- Crea un producto de prueba con nombre: "Ñoño café 100% – ¡Olé!" (incluye ñ, acentos, guión y emoji si quieres).
- Guárdalo y visualiza la ficha del producto en el front office.
- Si ves caracteres raros como "Ñoño", algo falló. Vuelve a revisar los pasos anteriores.
También puedes revisar desde phpMyAdmin:
- Selecciona una tabla (ej.
ps_product_lang). - Ve a Estructura y mira el cotejamiento de las columnas de texto (como
name,description). Deberían serutf8mb4_general_ci.
[TIP] Si después de todo ves caracteres extraños, puede que los datos antiguos ya estén corruptos. En ese caso, necesitarás reparar la base o reimportar los datos desde un backup limpio.
Preguntas frecuentes (FAQ)
¿Qué diferencia hay entre utf8 y utf8mb4?
utf8 en MySQL solo soporta hasta 3 bytes por carácter. utf8mb4 soporta hasta 4 bytes, lo que incluye emojis y caracteres especiales como algunos símbolos chinos. Siempre recomiendo utf8mb4 para PrestaShop moderno.
¿Puedo hacer esto desde Syspanel?
¡Claro! Syspanel (anteriormente HestiaCP) incluye phpMyAdmin en https://tudominio.com:2106. Accede con tu usuario y contraseña de Syspanel, luego sigue los pasos de phpMyAdmin que te expliqué arriba.
¿Afecta esto al rendimiento de mi tienda?
No. UTF-8 es eficiente y no ralentiza las consultas. De hecho, mejora la compatibilidad y evita errores que sí consumen recursos.
¿Y si uso un hosting compartido?
La mayoría de hosts modernos ya tienen UTF-8 por defecto. Si no, puedes pedirles que lo activen o seguir estos pasos desde phpMyAdmin. No necesitas permisos especiales.
¿Debo cambiar también el charset de las conexiones?
Sí, pero PrestaShop lo hace automáticamente si configuras 'database_charset' en parameters.php. Si ves problemas, puedes forzarlo añadiendo al archivo .htaccess o config.inc.php:
@ini_set('default_charset', 'UTF-8');
Resumen final
Configurar charset UTF-8 en MySQL para PrestaShop es un proceso de 4 pasos:
- Verificar el charset actual.
- Cambiar la base de datos y tablas a
utf8mb4. - Ajustar la configuración de PrestaShop.
- Probar con contenido real.
No olvides hacer backup antes de empezar. Si tienes dudas, revisa la documentación oficial de PrestaShop o contacta con tu soporte técnico. ¡Tu tienda ahora hablará todos los idiomas sin problemas!
¿Te ha sido útil? Si necesitas ayuda con otro tema (SEO, rendimiento, seguridad), solo dilo. Estoy aquí para ti.
