Base de conocimientos
1 000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!
Forzar una codificación al conectarse a una base de datos MySQL
Esta guía le ayudará a solucionar los problemas relacionados con los caracteres especiales (acentos, emojis, etc.) que no se muestran correctamente o aparecen como símbolos, como ??, a menudo debido a una codificación incorrecta al conectarse a MySQL.
Introducción
- Por defecto, MySQL utiliza
UTF-8. - Los servidores MySQL más recientes suelen estar configurados para utilizar
UTF-8oUTF-8MB4por defecto.- Esto es adecuado para la mayoría de los casos, especialmente para idiomas internacionales y emojis.
- Consulte también esta otra guía para aprender a evitar problemas de codificación con caracteres no europeos y emojis en sus desarrollos.
Definir el conjunto de caracteres predeterminado de MySQL / MariaDB (Servidor Cloud)
Con un Servidor Cloud de Infomaniak, es posible definir el conjunto de caracteres predeterminado (utf8 o utf8mb4):
- Haga clic aquí para acceder a la gestión de su producto en el Panel de control de Infomaniak (¿necesita ayuda?).
- Haga clic directamente en el nombre asignado al producto correspondiente.
- Haga clic en MariaDB en el menú lateral izquierdo.
- Elija el conjunto de caracteres predeterminado:

- Si aún no ha migrado a MariaDB, el principio es el mismo.
- Guarde los cambios en la parte inferior de la página.
Forzar una codificación específica (por ejemplo, latin1)
Si necesita trabajar con una base de datos en latin1 (ISO-8859-1), debe alinear explícitamente la codificación al conectarse, según su entorno.
En las ofertas actuales, coloque el siguiente código en un archivo user.ini ubicado en la raíz de su alojamiento:
mysql.connect_charset = "latin1"
mysqli.connect_charset = "latin1"
pdo_mysql.connect_charset = "latin1"o en PHP (API MySQL):
mysql_query("SET CHARACTER SET latin1");
En los planes de alojamiento antiguos, fuerce la conexión MySQL en latin1 a través del archivo .htaccess ubicado en la raíz de su alojamiento:
php_value mysql.connect_charset latin1
php_value mysqli.connect_charset latin1
php_value pdo_mysql.connect_charset latin1Enlace a esta FAQ: https://faq.infomaniak.com/1611
¿Le ha sido útil esta FAQ?