1000 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 permite resolver los problemas relacionados con los caracteres especiales (acentos, emojis, etc.) que no se muestran correctamente o aparecen en forma de símbolos como ??, a menudo debido a una mala codificación al conectarse a MySQL.
Prólogo
- Por defecto, MySQL utiliza
UTF-8. - Los servidores MySQL recientes suelen estar configurados para usar
UTF-8oUTF-8MB4por defecto.- Esto es adecuado para la mayoría de los casos, especialmente para los idiomas internacionales y los emojis.
- Tenga en cuenta 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 charset MySQL / MariaDB por defecto (Servidor Cloud)
Con un Servidor Cloud Infomaniak, es posible definir el charset por defecto (utf8 o utf8mb4):
- Haga clic aquí para acceder a la gestión de su producto en el Manager Infomaniak (¿Necesita ayuda?).
- Haga clic directamente en el nombre asignado al producto en cuestión.
- Haga clic en MariaDB en el menú lateral izquierdo y luego elija el conjunto de caracteres predeterminado:

Si aún no ha migrado a MariaDB, el principio es el mismo:
Forzar un codificación específica (latin1 por ejemplo)
Si debe 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 antiguos planes de alojamiento, 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 latin1