J’ai écrit un article contenant des émojis récemment et il était impossible de l’enregistrer. Il y avait un message disant « impossible de mettre à jour la publication dans la base de données ». A force de supprimer des éléments de l’article pour déterminer ce qui bloquait, j’ai compris que mon site, et celui-ci, ne supportaient pas les émojis. J’y ai perdu beaucoup de temps 😠. Alors je documente la solution pour me permettre de la retrouver si nécessaire, et pour aider d’autres internautes si nécessaire.

Pour déterminer la solution, je me suis appuyée sur cet excellent article, dont j’ai validé le processus par un bref echange avec Gemini 2.5 Flash.

Un InterClassement trop ancien !

Comme on le voit dans cette copie d’écran, certaines de mes tables utilisent utf8mb3_general_ci et d’autres utf8mb4_unicode_520_ci. Selon Gemini, « L’interclassement, ou « collation » en anglais, est un ensemble de règles qui définit comment les chaînes de caractères sont triées et comparées dans une base de données. Il détermine l’ordre alphabétique des caractères, la sensibilité à la casse (majuscules/minuscules) et aux accents, ce qui est crucial pour le tri des résultats de recherche ou le filtrage de données. »

Tous les interclassements que j’utilise sont basés sur UTF-8, encodage bien adapté. Mais utf8mb3 n’utilise que 3 octets par caractères et ne convient pas pour certains caractères spéciaux comme les emojis. Et il traite aussi les caractères accentués comme s’ils ne l’étaient pas, ce qui le rend moins précis.

utf8mb4_unicode_ci semble être le standard recommandé actuellement. Il convient à une gamme très large de caractères, y compris les emojis et caractères asiatiques.  Il respecte les règles de tri d’Unicode, ce qui le rend bien adapté à la plupart des langues. utf8mb4_unicode_520_ci est encore plus récent.

Quelles solutions ?

Après analyse de l’article et consultation de Gemini, j’ai décidé de procéder en trois étapes :

Etape 1 : sauvegarder la base de données

Ca se fait dans l’interface de l’hébergeur (Infomaniak par exemple) ou avec l’interface phpMyAdmin.

Etape 2 : Modifier wp-config.php

Il vaut mieux en télécharger la version actuelle au cas où avant de le modifier. Dans ce fichier je vois :

define('DB_CHARSET', 'utf8');

Je me modifie en :

define('DB_CHARSET', 'utf8mb4');

Et je vois qu’il n’y a pas besoin de changer la ligne

define('DB_COLLATE', '');

Et je sauvegarde le fichier wp-config.php ainsi modifié.

Etape 3 : migrer la base de données

Je vais migrer l’ensemble de la base de données vers utf8mb4_unicode_ci.

  1. Dans phpMyAdmin, sélectionnez votre base de données.
  2. Cliquez sur l’onglet « Opérations » en haut.
  3. Dans la section « Interclassement », sélectionnez utf8mb4_unicode_ci dans la liste déroulante.
  4. Cochez la case « Changer l’interclassement de toutes les tables » puis la case « Changer les interclassements de toutes les colonnes de toutes les tables »
  5. cliquer sur « Exécuter » :

Une fois l’opération terminée, vous verrez un message de succès.

Notez Que  si on clique sur « information schema » ça reste toujours le vieil interclassement ; mais ce schéma ne sert à rien (pour le site lui-même). Donc pas de problème !

Et maintenant ?

Je peux mettre autant d’emojis que je veux dans mes articles. Est-ce que c’est mieux ou pas, je ne sais pas !

🤪🚀💊

0 0 votes
Évaluation de l'article
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x