Guide de recherche et d'utilisation des Emoji : De l'encodage Unicode à la compatibilité multiplateforme

Texte

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 Google Microsoft Samsung Twitter
😀 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

  1. Éviter les Emoji ambigus : 🔫 (arme/pistolet à eau), 🍆 (légende/insinuation)
  2. Tester l'affichage multiplateforme : Utilisez l'Outil de recherche d'Emoji pour voir le rendu sur différentes plateformes
  3. Utilisation modérée en contexte professionnel : Éviter dans les e-mails/documents formels
  4. 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 &#x1F680;</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

  1. Ouvrez l'Outil de recherche d'Emoji
  2. Entrez un mot-clé (en français ou en anglais) comme "heureux"
  3. Consultez la liste des Emoji correspondants
  4. Cliquez pour copier dans le presse-papiers
  5. 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.

#Emoji#表情符号#Unicode#搜索#教程