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 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-8 o UTF-8MB4 por 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):

  1. Haga clic aquí para acceder a la gestión de su producto en el Administrador de Infomaniak (¿Necesita ayuda?).
  2. Haga clic directamente en el nombre asignado al producto correspondiente.
  3. Haga clic en MariaDB en el menú lateral izquierdo.
  4. Elija el conjunto de caracteres por defecto:
  5. 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

¿Le ha sido útil esta FAQ?