Corriger les problèmes d’emoji sur Strapi (v4)

Vous avez essayé d’insérer des données contenant des emojis (ou autre caractère unicode) et Strapi vous a renvoyé une erreur ? Voici la solution !

Article publié le 13/10/2023, dernière mise à jour le 13/10/2023

Si vous avez configuré votre serveur Strapi pour travailler avec une base MySQL, et que vous essayez de rajouter des émojis dans un texte, que ce soit dans l’administration ou par l’API, le CMS vous renverra : Unknown Server Error.

Mais si vous examinez de plus près les logs internes de Strapi, vous pourrez y déceller une erreur liée à la base de donnée :

Error : ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: <unicode…>

Le problème

En réalité, le problème ne vient ni de Strapi, ni de la base de données, mais bien de ce qu’il y a entre les deux : le client MySQL.

Par défaut, ce client utilisé pour se connecter à la base utilise un encodage et un charset qui sont incompatibles avec certains caractères Unicode, comme les émojis !

Mais voici comment résoudre simplement ce problème.

La solution

Si vous essayez de modifier l’encodage de votre table MySQL à la main, Strapi refusera quand même d’insérer les données.

Ou retournera “?” à la place de chaque émoji

La solution durable se cache en réalité dans la configuration de votre connecteur de base de données, directement dans les fichiers de configs de Strapi.

Il vous suffira simplement de rajouter les deux attributs suivants, au fichier “config/database.ts”, comme ceci :

// config/database.ts
export default ({ env }) => {
  return {
  connection: {
    client: 'mysql',
    connection: {
      host: env('MYSQL_HOST'),
      port: env.int('MYSQL_PORT'),
      database: env('MYSQL_DB'),
      user: env('MYSQL_USER'),
      password: env('MYSQL_PASSWORD'),
      ssl: env.bool('DATABASE_SSL'),
			/* Attributs à rajouter */
      collation: 'utf8mb4_unicode_ci',
      charset: 'utf8mb4',
    },
  },
}};

Une fois votre serveur redémarré, vous pourrez enfin sauvegarder des émojis et les récupérer dans n’importe qu’elle champ texte de votre CMS favori !


Vous avez terminé l'article ?

Commentaires (0)

pour laisser un commentaire

Aucun commentaire pour l'instant