Enregistrer des emojis dans WebDev 2025 (PHP/MySQL)
par , 09/01/2026 à 20h55 (1322 Affichages)
Sur WebDev 2025 (dongle) en génération PHP (Chaines Unicode) et MySQL:
- Les emojis ne s’enregistrent pas correctement en base.
- Si vous essayez, ils apparaissent sous la forme ???.
Pourquoi ?
WebDev, lorsqu’il génère du PHP en Unicode, configure la connexion MySQL par défaut en utf8.
L’utf8 standard de MySQL ne supporte que les caractères Unicode sur 3 octets maximum.
Les emojis et certains symboles récents utilisent 4 octets.
⚠️ Résultat : MySQL ne peut pas les stocker correctement et les remplace par ???.
En résumé : utf8 ≠ utf8mb4, et les emojis nécessitent utf8mb4 pour être sauvegardés tels quels.
Solution Encodage en PHP
Transformer les emojis en entités HTML avant l’insertion. Procedure en code natif PHP
✅ Avantage : fonctionne même avec une base utf8.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23function EncodeEmojisUTF8(string $sTexte): string { $sResultat = ""; // Assurez-vous que mbstring est configuré en UTF-8 $length = mb_strlen($sTexte, 'UTF-8'); for ($i = 0; $i < $length; $i++) { $sCar = mb_substr($sTexte, $i, 1, 'UTF-8'); // Obtenir le code Unicode du caractère $nCode = mb_ord($sCar, 'UTF-8'); // Emoji ou caractère sur 4 octets Unicode if ($nCode > 0xFFFF) { $sResultat .= "&#x" . strtoupper(dechex($nCode)) . ";"; } else { $sResultat .= $sCar; } } return $sResultat; }
⚠️ Inconvénient : le texte contient maintenant des entités HTML au lieu des emojis bruts.
Il est également possible de résoudre le problème en ajustant la configuration de la connexion MySQL pour utiliser un encodage compatible avec les emojis.
Cette approche est plus avancée, dépend fortement du contexte et n’est pas détaillée dans ce mini‑tuto.
Pour ceux qui souhaitent en discuter ou partager leur expérience, vous pouvez consulter le blog de Developpez.com.










