Guide de recherche et d'utilisation des Emoji : De l'encodage Unicode à la compatibilité multiplateforme
Encodage Unicode des Emoji
Plages d'encodage
| Plage | Bloc Unicode | Exemple |
|---|---|---|
| U+1F600 - U+1F64F | Emoticons | 😀😁😂 |
| U+1F300 - U+1F5FF | Misc Symbols & Pictographs | 🎨🌟🌀 |
| U+1F680 - U+1F6FF | Transport & Map | 🚀🚗🚲 |
| U+1F900 - U+1F9FF | Supplemental Symbols & Pictographs | 🤖🦊🦁 |
| U+1FA00 - U+1FA6F | Chess Symbols | 🪀🪁🪂 |
| U+1FA70 - U+1FAFF | Symbols & Pictographs Extended-A | 🪩🪫🪬 |
Représentation de l'encodage
// Point de code Unicode
console.log('\u{1F600}'); // 😀
console.log('\u{1F680}'); // 🚀
// Requête de point de code
console.log('😀'.codePointAt(0).toString(16)); // "1f600"
// Créer depuis un point de code
String.fromCodePoint(0x1F600); // "😀"
String.fromCodePoint(0x1F680); // "🚀"
Longueur de l'encodage UTF-8
// L'Emoji occupe 4 octets en UTF-8
new TextEncoder().encode('😀').length; // 4
// Mais .length renvoie 2 (paire de substitution)
'😀'.length; // 2
// Compter correctement les caractères
[...'😀😁😂'].length; // 3
Modificateurs de ton de peau
5 tons de peau
U+1F3FB 🏻 Tonnalité claire (Light Skin Tone)
U+1F3FC 🏼 Tonnalité moyennement claire (Medium-Light)
U+1F3FD 🏽 Tonnalité moyenne (Medium)
U+1F3FE 🏾 Tonnalité moyennement foncée (Medium-Dark)
U+1F3FF 🏿 Tonnalité foncée (Dark)
Combinaison
Emoji de base + Modificateur de ton de peau = Emoji avec ton de peau
👨 + 🏽 = 👨🏽
👋 + 🏿 = 👋🏿
// Combinaison en JavaScript
const base = '\u{1F468}'; // 👨
const modifier = '\u{1F3FD}'; // 🏽
const result = base + modifier; // 👨🏽
// Décomposition
[...'👨🏽']; // ['👨', '🏽']
Séquences de jointure de largeur nulle (ZWJ)
ZWJ (U+200D) combine plusieurs Emoji en un seul :
👨 + ZWJ + 🏭 = 👨🏭 (Ouvrier d'usine)
👩 + ZWJ + 💻 = 👩💻 (Technologue)
👨 + ZWJ + ❤️ + ZWJ + 👨 = 👨❤️👨 (Couple d'hommes)
Combinaisons familiales
👨 + ZWJ + 👩 + ZWJ + 👦 = 👨👩👦 (Famille de trois)
👨 + ZWJ + 👨 + ZWJ + 👧 = 👨👨👧 (Deux pères et une fille)
Combinaisons de drapeaux
🇨 + 🇭 = 🇨🇭 (Drapeau suisse)
🇯 + 🇵 = 🇯🇵 (Drapeau japonais)
🇨 + 🇳 = 🇨🇳 (Drapeau chinois)
Les Emoji de drapeaux sont composés de deux indicateurs régionaux (Regional Indicator).
Différences d'affichage multiplateforme
| Emoji | Apple | Microsoft | Samsung | ||
|---|---|---|---|---|---|
| 😀 | Style 😁 | Style 😁 | Style 😁 | Style 😁 | Style 😁 |
| 🔫 | Pistolet à eau | Pistolet à eau | Vraie arme | Pistolet à eau | Pistolet à eau |
Le même Emoji a une apparence différente selon la plateforme, mais le point de code Unicode est identique.
Recommandations pour éviter les malentendus
- Éviter les Emoji ambigus : 🔫 (arme/pistolet à eau), 🍆 (légende/insinuation)
- Tester l'affichage multiplateforme : Utilisez l'Outil de recherche d'Emoji pour voir le rendu sur différentes plateformes
- Utilisation modérée en contexte professionnel : Éviter dans les e-mails/documents formels
- Attention aux séquences combinées : Les séquences ZWJ peuvent s'afficher comme plusieurs Emoji indépendants sur les anciens systèmes
Utiliser les Emoji dans le code
HTML
<!-- Utilisation directe -->
<p>Bienvenue 🚀</p>
<!-- Échappement Unicode -->
<p>Bienvenue 🚀</p>
<!-- CSS content -->
<style>
.icon::before { content: '\1F680'; }
</style>
JavaScript
// Utilisation directe (recommandé)
const rocket = '🚀';
// Échappement Unicode
const rocket = '\u{1F680}';
// Dans les chaînes
const message = `Déploiement réussi ${rocket}`;
// Comme clé d'objet (non recommandé, mais possible)
const icons = { '🚀': 'rocket', '🎨': 'art' };
Python
# Utilisation directe
rocket = '🚀'
# Échappement Unicode
rocket = '\U0001F680'
# Dans une f-string
message = f'Déploiement réussi {rocket}'
Stockage en base de données
-- MySQL : nécessite le jeu de caractères utf8mb4
CREATE TABLE messages (
content VARCHAR(500) CHARACTER SET utf8mb4
);
-- ❌ Le jeu de caractères utf8 ne peut pas stocker les Emoji
-- ✅ Le jeu de caractères utf8mb4 peut stocker les Emoji
Rechercher des Emoji avec l'outil de Tools Ku
- Ouvrez l'Outil de recherche d'Emoji
- Entrez un mot-clé (en français ou en anglais) comme "heureux"
- Consultez la liste des Emoji correspondants
- Cliquez pour copier dans le presse-papiers
- Parcourez par catégories
Exemples de recherche
| Mot-clé | Résultat |
|---|---|
| heureux | 😄😁😆😊🥰 |
| fusée | 🚀🚁🛸 |
| chat | 🐱🐈🐈⬛ |
| nourriture | 🍕🍔🍜🍣🍰 |
| travail | 💼💻📊📋✏️ |
Expressions régulières pour les Emoji
Correspondre tous les Emoji
// Regex pour Emoji (version simplifiée)
const emojiRegex = /\p{Emoji_Presentation}/gu;
// Version plus complète (incluant modificateurs et séquences ZWJ)
const fullEmojiRegex = /\p{Extended_Pictographic}(\u{FE0F})?(\u{1F3FB}-\u{1F3FF})?(\u{200D}\p{Extended_Pictographic}(\u{FE0F})?(\u{1F3FB}-\u{1F3FF})?)*/gu;
// Utilisation
const text = 'Hello 😀 World 🚀';
const emojis = text.match(fullEmojiRegex);
// ["😀", "🚀"]
Supprimer les Emoji du texte
function removeEmoji(text: string): string {
return text.replace(/\p{Emoji_Presentation}/gu, '');
}
removeEmoji('Hello 😀 World 🚀'); // "Hello World "
Compter le nombre d'Emoji
function countEmoji(text: string): number {
const matches = text.match(/\p{Emoji_Presentation}/gu);
return matches ? matches.length : 0;
}
Questions fréquentes
Pourquoi les Emoji s'affichent-ils comme des carrés □ ?
- Police non supportée : Le système manque de polices Emoji
- Jeu de caractères incorrect : La base de données/le fichier utilise UTF-8 au lieu de UTF-8MB4
- Version obsolète : Les nouveaux Emoji nécessitent une version plus récente du système
Pourquoi le .length d'un Emoji n'est pas 1 ?
'😀'.length // 2 (paire de substitution)
'👨🏽'.length // 4 (base + modificateur, chacun occupe 2)
'👨👩👦'.length // 8 (3 Emoji + 2 ZWJ)
[...'👨👩👦'].length // 5 (décomposition correcte)
// Longueur de chaîne sécurisée
function safeLength(str: string): number {
return [...str].length;
}
Comment obtenir les derniers Emoji ?
Les Emoji sont mis à jour annuellement (avec la version Unicode), les nouveaux Emoji nécessitent :
- Une mise à jour du système d'exploitation (iOS/Android/Windows)
- Une mise à jour du navigateur
- Une mise à jour des polices (Noto Color Emoji)
Résumé
Les Emoji font partie du standard Unicode. Comprendre leurs principes d'encodage (points de code, modificateurs, séquences ZWJ) aide à traiter correctement les problèmes de compatibilité multiplateforme. Points clés : utilisez utf8mb4 pour le stockage en base de données, [...str] pour compter les caractères et attention aux différences d'affichage entre plateformes. L'Outil de recherche d'Emoji de Tools Ku vous permet de trouver rapidement les Emoji dont vous avez besoin.