🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Configurar la codificación UTF-8 en una base de datos MySQL para PrestaShop

Actualizado el 30 de octubre de 2025

¿Tu tienda PrestaShop muestra signos raros, cuadrados o interrogaciones donde deberían ir tildes, eñes o caracteres especiales? ¿Los nombres de productos con acentos se ven mal? El problema más común es que la base de datos MySQL no está configurada con la codificación UTF-8. En este artículo te explicamos paso a paso cómo configurar la codificación UTF-8 en una base de datos MySQL para PrestaShop, solucionar los problemas de caracteres especiales y evitar futuros dolores de cabeza. Todo explicado de forma sencilla, sin tecnicismos complicados.

¿Por qué es importante la codificación UTF-8 en PrestaShop?

PrestaShop es una plataforma multilingüe. Si vendes en español, francés, alemán o cualquier idioma con acentos, eñes, cedillas o caracteres especiales, necesitas que tu base de datos entienda y almacene correctamente esos caracteres. La codificación UTF-8 MySQL PrestaShop es la combinación ganadora.

Cuando tu base de datos usa otra codificación (como latin1), los caracteres especiales se convierten en símbolos extraños. Esto afecta a:

  • Nombres de productos y categorías.
  • Descripciones y textos largos.
  • Direcciones de clientes.
  • Traducciones de módulos y temas.

Además, Google valora negativamente las páginas con errores de codificación, lo que puede perjudicar tu SEO. Una correcta codificación base de datos PrestaShop es esencial para la experiencia de usuario y el posicionamiento.

¿Cómo saber si tu base de datos ya usa UTF-8?

Antes de hacer cambios, verifica el estado actual. Puedes hacerlo de dos formas:

1. Desde phpMyAdmin (el método más fácil)

  • Accede a tu panel de control de hosting y busca phpMyAdmin.
  • Selecciona la base de datos de tu PrestaShop.
  • Busca la pestaña "Operations" o "Operaciones".
  • En la sección "Collation" verás el valor actual. Debe ser algo como utf8_general_ci o utf8mb4_general_ci.

2. Desde la línea de comandos (si tienes acceso SSH)

Ejecuta esta consulta SQL:

SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME = 'nombre_de_tu_bd';

Si ves utf8 o utf8mb4, estás bien. Si ves latin1, necesitas cambiarlo.

Preparativos antes de cambiar la codificación

[WARNING] Realiza siempre una copia de seguridad completa de tu base de datos antes de hacer cualquier cambio. Un error puede dejar tu tienda inservible.

Puedes hacer la copia desde:

  • phpMyAdmin: Exportar > método rápido.
  • Línea de comandos: mysqldump -u usuario -p nombre_bd > respaldo.sql
  • Si usas Syspanel (antes HestiaCP, puerto 2106), ve a "Bases de datos" y usa la opción de exportar.

Paso a paso: Configurar UTF-8 en MySQL para PrestaShop

1. Cambiar la codificación de la base de datos

Conéctate a MySQL (phpMyAdmin, línea de comandos o tu panel) y ejecuta:

ALTER DATABASE nombre_de_tu_bd CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

¿Por qué utf8mb4 y no utf8?
utf8mb4 es la versión completa de UTF-8 que soporta emojis y caracteres de 4 bytes. PrestaShop moderno lo recomienda. Si tu versión es muy antigua, usa utf8.

2. Cambiar la codificación de todas las tablas

Esto es más tedioso pero necesario. Puedes generar las consultas automáticamente:

SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;')
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'nombre_de_tu_bd'
  AND TABLE_TYPE = 'BASE TABLE';

Copia el resultado y ejecútalo. O si prefieres, hazlo tabla por tabla desde phpMyAdmin (marcando todas y usando "Operations" > "Change collation").

3. Cambiar la codificación de las columnas (opcional pero recomendado)

Algunas columnas pueden heredar la codificación de la tabla, pero otras pueden tenerla fija. Para asegurarte:

SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' MODIFY ', COLUMN_NAME, ' ', COLUMN_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'nombre_de_tu_bd'
  AND (CHARACTER_SET_NAME IS NOT NULL AND CHARACTER_SET_NAME != 'utf8mb4');

Ejecuta las consultas generadas. Esto es más avanzado, pero garantiza que no quede ningún rincón con latin1.

Configurar PrestaShop para usar UTF-8

No basta con la base de datos; PrestaShop debe saber que estás usando UTF-8.

1. Archivo config/settings.inc.php (PrestaShop 1.6 y anteriores)

Busca la línea:

define('_DB_CHARSET_', 'utf8');

Si no existe, agrégala antes del cierre ?>. Si ves latin1, cámbiala a utf8.

2. Archivo app/config/parameters.php (PrestaShop 1.7+)

Busca:

'database_charset' => 'utf8',

Si está en latin1, cámbialo a utf8. Luego limpia la caché desde el back office: Parámetros avanzados > Rendimiento > Limpiar caché.

3. Forzar UTF-8 en la conexión

En el mismo archivo, asegúrate de que la conexión use UTF-8. En PrestaShop 1.7, añade o verifica:

'database_engine' => 'InnoDB',
'server_version' => '5.7',

Y en el bloque de configuración de Doctrine (si existe), añade:

'charset' => 'utf8mb4',

Solucionar problemas comunes con caracteres especiales

Después de cambiar la codificación, es posible que los datos antiguos sigan mostrándose mal. Esto se debe a que los caracteres ya estaban almacenados incorrectamente. Aquí tienes soluciones:

1. Convertir datos existentes con una consulta mágica

Esta consulta corrige datos que están doblemente codificados (por ejemplo, latin1 almacenado como utf8):

UPDATE ps_product_lang SET name = CONVERT(CAST(CONVERT(name USING latin1) AS BINARY) USING utf8mb4)
WHERE id_lang = 1;

Repite para cada tabla que tenga texto (ps_product_lang, ps_category_lang, ps_configuration_lang, etc.). Cambia el id_lang según tu idioma.

2. Usar la herramienta de PrestaShop (módulos)

Existen módulos gratuitos como "UTF-8 Fixer" que pueden ayudar. Búscalos en el marketplace oficial.

3. Reimportar datos limpios

Si el problema persiste, exporta tu base de datos, ábrela en un editor de texto (Notepad++ o similar), asegúrate de que el archivo esté en UTF-8 (sin BOM), y vuelve a importarla.

¿Qué hacer si usas Syspanel (antes HestiaCP)?

Si tu hosting usa Syspanel (acceso por puerto 2106), el proceso es similar pero con algunas particularidades:

  1. Accede a Syspanel con tu usuario y contraseña (puerto 2106).
  2. Ve a "Bases de datos" y selecciona la de tu PrestaShop.
  3. Usa phpMyAdmin integrado (enlace directo desde Syspanel).
  4. Sigue los pasos anteriores desde phpMyAdmin.
  5. Si necesitas acceso SSH, en Syspanel ve a "Ajustes del servidor" > "Acceso SSH" y habilítalo.

[TIP] Syspanel suele tener configuraciones por defecto seguras. Si tu base de datos ya usa utf8, solo necesitas ajustar las tablas y columnas.

Preguntas frecuentes (FAQ)

¿Puedo perder datos al cambiar a UTF-8?

Sí, si no haces copia de seguridad. Con respaldo, es seguro. Siempre prueba en un entorno de desarrollo primero.

¿Qué diferencia hay entre utf8_general_ci y utf8_unicode_ci?

utf8_unicode_ci es más preciso para ordenar caracteres multilingües. Para PrestaShop, usa utf8mb4_unicode_ci.

¿Afecta esto al rendimiento de la tienda?

Mínimamente. UTF-8 ocupa un poco más de espacio, pero los servidores modernos lo manejan sin problemas.

¿Debo cambiar también la codificación del archivo .htaccess?

No, el .htaccess no maneja codificación de base de datos, pero sí la del navegador. Asegúrate de que tu tema envíe el header Content-Type: text/html; charset=UTF-8.

¿Qué hago si mi hosting no permite cambiar la codificación?

Contacta con el soporte técnico. La mayoría de los hostings lo permiten. Si usas Syspanel, el soporte suele ser rápido.

Conclusión: Una tienda sin errores de caracteres

Configurar la codificación UTF-8 en una base de datos MySQL para PrestaShop es un proceso sencillo pero crucial. Siguiendo estos pasos, eliminarás los molestos caracteres extraños, mejorarás la experiencia de tus clientes y evitarás problemas de SEO.

Recuerda:

  • Siempre haz respaldo antes de tocar la base de datos.
  • Usa utf8mb4 siempre que sea posible.
  • Verifica que PrestaShop esté configurado para usar UTF-8.
  • Si usas Syspanel, accede por el puerto 2106 y usa su phpMyAdmin integrado.

Con tu base de datos en UTF-8, tu tienda PrestaShop hablará correctamente cualquier idioma. ¡Adiós a los signos raros y hola a una tienda profesional!

[INFO] Si después de seguir todos los pasos sigues viendo caracteres extraños, revisa que tu tema y módulos también estén codificados en UTF-8. Algunos temas antiguos pueden tener archivos en ISO-8859-1.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel