Intermédiaire 8 min de lecture 25 janvier 2025

Emoji list: tout comprendre pour des listes d'emojis fiables

Vous voulez constituer une emoji list pour vos produits, vos filtres de contenu ou vos exports. Les rendus diffèrent selon les plateformes, les séquences ZWJ cassent vos parsers, les variations de présentation changent vos comparaisons. Voici comment aborder l’emoji list de manière robuste, de la détection à la normalisation.

Qu'est-ce qu'une emoji list ?

Une emoji list est un inventaire structuré des emojis que vous gérez: codepoints, séquences, variantes, noms et métadonnées utiles à l'affichage et au traitement.

Les principaux éléments à connaître pour une emoji list durable :

1 Emojis simples (un seul codepoint)

Symboles indépendants sans modificateur ni séquence.

U+2764 ❤, U+2600 ☀, U+1F680 🚀, U+1F4A1 💡

2 Modificateurs et variantes

Tons de peau, genre, sélecteur de variation texte/emoji.

Fitzpatrick U+1F3FB…U+1F3FF, VS16 U+FE0F (présentation emoji), VS15 U+FE0E (texte)

3 Séquences et ligatures ZWJ

Combinaisons d’emojis reliées par ZWJ (U+200D) pour former un seul glyphe.

👨‍💻 = U+1F468 U+200D U+1F4BB
👩‍👩‍👧‍👦 = U+1F469 U+200D U+1F469 U+200D U+1F467 U+200D U+1F466
🏳️‍🌈 = U+1F3F3 U+FE0F U+200D U+1F308
👋🏻 = U+1F44B U+1F3FB

4 Métadonnées pour votre emoji list

Noms, shortcodes, catégories, mots-clés, version Unicode.

shortcode: :rocket:, :heart:, :laptop:
CLDR name: "rocket", "red heart"
Category: Smileys, People, Activities…
Unicode version: 15.1, 16.0, etc.

Problèmes classiques

Copier-coller entre plateformes

Perte du sélecteur de variation (U+FE0F) ou rendu différent selon OS et police.

Tests qui échouent

Deux cœurs paraissent identiques mais diffèrent par VS16 ou ZWJ, les comparaisons échouent.

Longueur et découpe trompeuses

length()/substr() comptent les code units, pas les graphèmes; les séquences ZWJ sont cassées.

Regex incomplètes

Sans classes Unicode étendues et indicateur "u", les emojis ne sont pas capturés correctement.

Exemple de problème courant :

# Deux cœurs semblent identiques mais diffèrent par la variation
string1 = "I ❤️ dev" # U+2764 U+FE0F
string2 = "I dev" # U+2764 (sans U+FE0F)
assert string1 == string2 # ❌ Échec

Symptômes qui doivent vous alerter

🚨 Signaux d'alarme

!
Un diff git montre des changements invisibles après ajout d'emojis à votre emoji list
!
Vos exports CSV voient des colonnes décalées à cause de séquences ZWJ copiées/collées
!
Des validations de longueur échouent car un seul emoji compte pour plusieurs unités
!
Certains emojis apparaissent en noir et blanc au lieu de la version colorée
!
Un copier-coller dans un terminal imprime des carrés ou des points d'interrogation

Comment les détecter

Solution recommandée : Clean ASCII

Clean ASCII détecte automatiquement les emojis dans vos textes et vous aide à bâtir une emoji list exploitable. Visualisez les séquences, variantes et positions pour parer aux incohérences d’encodage.

✅ Détection des emojis

Emojis simples, modificateurs, ZWJ, drapeaux et variantes VS15/VS16

📊 Analyse complète

Codepoints, séquences, versions Unicode, catégories et positions exactes

🧹 Normalisation

Harmonisation des variantes et conversion optionnelle en shortcodes

💾 Export propre

Téléchargement des textes nettoyés ou de l’emoji list enrichie

Autres méthodes de détection

Affichage dans l'éditeur

Activez l’Unicode support et le rendu couleur des emojis (VS Code, JetBrains, Sublime)
Installez une extension qui met en évidence ZWJ et VS16 dans vos emoji list

En ligne de commande (Unix)

# Repérer des emojis étendus (PCRE, si dispo)
grep -P "\p{Extended_Pictographic}" fichier.txt
# Voir les séquences ZWJ et VS16
grep -nP "\x{200D}|\x{FE0F}" fichier.txt
# Afficher les caractères et contrôles
cat -A fichier.txt
# Inspecter en hexadécimal
hexdump -C fichier.txt

En code

JavaScript

Array.from(str).filter(c => /\p{Extended_Pictographic}/u.test(c))

Python

import re; re.findall(r'[\U0001F300-\U0001FAFF\u2600-\u27BF]', s)

Excel / Google Sheets

UNICODE(MID(cellule;position;1)) >= 127744

Nettoyer et prévenir

🚀 Solution rapide avec Clean ASCII

Avant de coder des traitements complexes, utilisez Clean ASCII pour détecter, extraire et normaliser votre emoji list en quelques clics.

Détection des emojis et séquences
Normalisation des variantes
Export de l’emoji list

Méthodes techniques avancées

🔧 Normaliser

Appliquez NFC/NFKC si pertinent et unifiez la présentation (VS16 pour emoji colorés)
Décidez d’une politique sur les modificateurs (tons de peau par défaut, genres explicites)
Conservez des identifiants stables (shortcodes/CLDR) à côté des séquences Unicode

🧹 Filtrer

Écrivez des fonctions strip_emojis() pour retirer ou remplacer par des shortcodes
Normalisez les VS16/VS15 selon votre stratégie d’affichage
Restreignez les séquences ZWJ à un sous-ensemble autorisé

⚙️ Automatiser

Hooks pre-commit pour refuser des emojis hors version Unicode supportée
Tests de segmentation en graphèmes pour éviter les découpes invalides
Linting CI pour surveiller l’emoji list et les changements de séquences

Checklist rapide

Stratégie claire pour VS16/VS15 et ZWJ
Catégories et shortcodes stables dans l’emoji list
Compatibilité police/plateforme vérifiée
Fonctions de détection/filtrage d’emojis dans vos libs
Tests unitaires sur comparaisons et longueurs en graphèmes
Documentation interne sur l’emoji list et Unicode

Conclusion

Une emoji list bien pensée évite des heures de debug et d’incohérences d’affichage entre plateformes.

Adoptez une détection systématique, normalisez les variantes et maîtrisez les séquences ZWJ pour une emoji list stable et exploitable.

Créez et vérifiez votre emoji list maintenant

Utilisez notre outil pour identifier, normaliser et exporter les emojis présents dans vos textes.

Analyser mon texte