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 generalmente están configurados para utilizar
UTF-8oUTF-8MB4por defecto.- Esto es adecuado para la mayoría de los casos, especialmente para los idiomas internacionales y los emojis.
- También consulte esta otra guía para aprender a evitar causar problemas de codificación con caracteres no europeos y emojis en sus desarrollos.
Definir el conjunto de caracteres MySQL / MariaDB por defecto (Servidor en la nube)
Con un Servidor en la nube de Infomaniak, es posible definir el conjunto de caracteres por defecto (utf8 o utf8mb4):
- Haga clic aquí para acceder a la gestión de su producto en el Administrador 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 por defecto:

- Si aún no ha migrado a MariaDB, el principio es el mismo.
- Guarde sus cambios al final de la página.
Forzar una 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 las antiguas fórmulas 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