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-8
oUTF-8MB4
por 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