1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !
Forcer un encodage lors de la connexion Ă une base MySQL
Ce guide permet de résoudre les problèmes liés aux caractères spéciaux (accents, emojis, etc.) qui ne s’affichent pas correctement ou apparaissent sous forme de symboles comme ??, souvent dû à un mauvais encodage lors de la connexion à MySQL.
Préambule
- Par défaut, MySQL utilise
UTF-8
. - Les serveurs MySQL récents sont généralement configurés pour utiliser
UTF-8
ouUTF-8MB4
par défaut.- Cela convient à la majorité des cas, notamment pour les langues internationales et les emojis.
- Prenez également connaissance de cet autre guide pour apprendre à éviter de provoquer des problèmes d'encodage avec les caractères non européens et les emojis dans vos développements.
Définir le charset MySQL / MariaDB par défaut (Serveur Cloud)
Avec un Serveur Cloud Infomaniak, il est possible de définir le charset par défaut (utf8
ou utf8mb4
):
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez directement sur le nom attribué au produit concerné.
- Cliquez sur MariaDB dans le menu latéral gauche puis choisissez le charset par défaut:
Si vous n'avez pas encore migré vers MariaDB, le principe est le même:
Forcer un encodage spécifique (latin1
par exemple)
Si vous devez travailler avec une base de données en latin1
(ISO-8859-1), vous devez aligner explicitement l'encodage lors de la connexion, selon votre environnement.
Sur les offres actuelles, placez le code suivant dans un fichier user.ini
situé à la racine de votre hébergement:
mysql.connect_charset = "latin1"
mysqli.connect_charset = "latin1"
pdo_mysql.connect_charset = "latin1"
ou en PHP (API MySQL):
mysql_query("SET CHARACTER SET latin1");
Sur les anciennes formules d'hébergement, forcez la connexion MySQL en latin1
via le fichier .htaccess
situé à la racine de votre hébergement:
php_value mysql.connect_charset latin1
php_value mysqli.connect_charset latin1
php_value pdo_mysql.connect_charset latin1