Si votre site web affiche des caractères étranges, des points d’interrogation dans des carrés ou des emojis cassés, c’est généralement parce que votre base de données utilise encore l’ancien charset utf8 ou latin1 au lieu de utf8mb4. Utf8mb4 est l’implémentation complète d’UTF-8 dans MySQL/MariaDB et prend en charge tous les caractères Unicode, y compris les emojis et les caractères linguistiques spéciaux. Dans cet article, découvrez ce qu’est utf8mb4, pourquoi c’est important et comment le configurer étape par étape sans perte de données.
Qu’est-ce qu’UTF8MB4 et pourquoi l’utiliser
MySQL connaît plusieurs jeux de caractères pour stocker du texte. L’ancien charset utf8 dans MySQL est en réalité une variante limitée qui utilise au maximum 3 octets par caractère. De ce fait, de nombreux caractères modernes, comme les emojis et certains caractères asiatiques, ne peuvent pas être stockés correctement. Utf8mb4 utilise jusqu’à 4 octets par caractère et couvre ainsi l’intégralité de la norme Unicode.
Pour un site web ou une boutique en ligne, cela devient pertinent dès que les utilisateurs saisissent du texte qui sort du jeu de caractères latin de base : noms avec accents, langues asiatiques, signes de ponctuation spéciaux ou emojis dans les avis et messages de chat. Sans utf8mb4, cette saisie et ce stockage bloquent ou les caractères sont endommagés.
Différence entre utf8 et utf8mb4
La principale différence réside dans la longueur maximale en octets par caractère. Utf8 dans MySQL ne prend pas entièrement en charge le Basic Multilingual Plane, tandis qu’utf8mb4 le fait. De plus, il existe une différence de collation : là où utf8 utilise par exemple utf8_general_ci, vous travaillez généralement avec utf8mb4 avec utf8mb4_general_ci ou la version plus précise utf8mb4_unicode_ci.
Une conséquence pratique est que les colonnes avec un index peuvent avoir une longueur maximale légèrement inférieure avec utf8mb4, car chaque caractère occupe plus d’espace. Sur les anciennes versions de MySQL, cela pouvait entraîner des erreurs sur les longs champs de texte indexés, mais sur les versions modernes avec les bons réglages, ce problème est devenu rare.
Configurer UTF8MB4 via Plesk
Dans Plesk, vous pouvez modifier le charset d’une base de données via l’outil de gestion de base de données intégré ou phpMyAdmin. Allez dans Sites web & domaines, ouvrez l’onglet Bases de données et cliquez sur phpMyAdmin au niveau de la base de données concernée. Vous pouvez y modifier la collation par base de données ou par table vers utf8mb4_unicode_ci via l’onglet Operations ou Structure.
Après avoir effectué la modification, vérifiez toujours que votre CMS ou application (comme WordPress ou un script personnalisé) utilise également le bon charset dans son fichier de configuration, afin que la connexion entre l’application et la base de données soit cohérente.
Configurer UTF8MB4 via des commandes SQL
Vous préférez effectuer la modification via SQL, par exemple dans l’onglet SQL de phpMyAdmin ou via la ligne de commande ? Utilisez les commandes ci-dessous comme base.
Modifier la base de données
Exécutez : ALTER DATABASE votre_base_de_donnees CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; pour modifier le charset par défaut de toute la base de données.
Modifier les tables
Exécutez pour chaque table : ALTER TABLE votre_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; afin que les colonnes existantes soient converties.
Vérifier les paramètres de connexion
Assurez-vous que votre application se connecte en utf8mb4, par exemple via mysqli_set_charset($conn, "utf8mb4") en PHP, afin que les données soient correctement envoyées et reçues.
Tester le résultat
Effectuez une saisie de test avec un emoji ou un caractère spécial et vérifiez qu’elle est correctement stockée et affichée sur le site web.
Vous êtes bloqué à une de ces étapes ? Consultez la base de connaissances de Tandata sur /nl/support/ pour plus d’explications sur la gestion de base de données, ou contactez le support 24/7 via WhatsApp, ticket ou e-mail.
Questions fréquentes
Est-ce que je perds des données en convertissant vers utf8mb4 ?
Normalement non, tant que les données existantes contiennent déjà des caractères UTF-8 valides. Faites toujours une sauvegarde par sécurité avant d’effectuer la conversion.
Dois-je aussi adapter mon CMS après la conversion ?
Oui, vérifiez le fichier de configuration de votre CMS ou script et assurez-vous que la connexion à la base de données utilise aussi explicitement utf8mb4, sinon les caractères pourraient continuer à s’afficher incorrectement.
Utf8mb4 fonctionne-t-il avec toutes les versions de MySQL ?
Utf8mb4 est pris en charge à partir de MySQL 5.5.3, mais pour une prise en charge complète des caractères sur 4 octets et des index plus longs, une version plus récente est recommandée.
Puis-je modifier le charset sans interruption de service ?
Pour les petites bases de données, vous ne remarquerez généralement rien lors de la conversion. Pour les grandes tables, cela peut prendre un certain temps, il est donc préférable de le faire en dehors des heures de pointe.
Cela s’applique-t-il aussi aux données e-mail dans la base de données ?
Oui, si vous stockez par exemple des messages e-mail ou des formulaires de contact dans une base de données, utf8mb4 garantit que tous les caractères sont conservés correctement. Découvrez aussi les possibilités pour l’e-mail professionnel chez Tandata.
Conclusion
En convertissant votre base de données MySQL vers utf8mb4, vous évitez les problèmes d’affichage avec les emojis, les accents et les caractères spéciaux. Via Plesk ou de simples commandes SQL, vous réglez cela rapidement, à condition de faire d’abord une sauvegarde et de vérifier les paramètres de votre application. Vous avez des doutes sur votre environnement d’hébergement actuel ? Découvrez les possibilités d’hébergement web chez Tandata.