Dans notre dernier post, nous avons examiné le code ASCII, qui est à l'origine de tous les caractères numériques. Bien que l'ASCII soit remarquable, sa capacité de 128 caractères est largement insuffisante pour contenir toutes les langues du monde.

Aujourd'hui, nous allons parler de Unicode, une énorme promesse qui dépasse les limites de l'ASCII en intégrant tous les caractères du monde, y compris le coréen, les idéogrammes chinois, l'arabe, et même les émojis.


Dans les débuts d'Internet, il était courant de visiter des sites web d'autres pays et de voir des écrans couverts de symboles comme au lieu de caractères compréhensibles. Ce phénomène est connu sous le nom de 'Mojibake'.

La raison était simple. Chaque pays, chaque zone linguistique utilisait des tableaux de caractères (Encoding) différents. Deux ordinateurs différents pouvaient interpréter les mêmes données binaires, l'un disant "C'est du coréen" tandis que l'autre affirmait "C'est une langue d'Europe de l'Ouest".

Pour calmer la confusion de cette tour de Babel numérique, le Unicode est apparu comme le sauveur.

Autour du globe, divers caractères provenant de différentes langues

1. Qu'est-ce que Unicode ?



Unicode est l'abréviation de "Universal Code", un standard international qui attribue un numéro unique (Code Point) à chaque caractère dans le monde.

Alors que le code ASCII numérotait les caractères de 0 à 127, Unicode a en fait élargi cette plage à l'infini. Actuellement, plus de 140 000 caractères sont enregistrés dans Unicode, comprenant non seulement les langues existantes, mais aussi des idéogrammes anciens, des symboles de notation musicale, et les émojis que nous utilisons quotidiennement.

Code Point

Unicode gère chaque caractère avec un numéro hexadécimal commençant par U+.

  • Lettre latine 'A': $U+0041$ (identique au code ASCII)

  • Caractère coréen '가': $U+AC00$

  • Caractère chinois '日': $U+65E5$

  • Émoji '😀': $U+1F600$

Désormais, quand n'importe quel ordinateur dans le monde reçoit le signal $U+1F600$, il peut évoquer le même visage souriant (😀) indépendamment des paramètres de langue.

2. Unicode et UTF-8 sont-ils la même chose ?

C'est une zone de confusion pour beaucoup. "Unicode" et "UTF-8" ne sont pas identiques. Comprendre leur relation est essentiel à l'article d'aujourd'hui.

  • Unicode: C'est une 'carte' qui associe des caractères et des nombres. (une promesse abstraite)

  • UTF-8 (Encoding): C'est la 'méthode' de stockage réel de ces nombres dans la mémoire de l'ordinateur.

Si Unicode est comme un 'catalogue' qui attribue des numéros d'identification à tous les objets dans le monde, alors UTF-8 est la 'technique' d'emballage de ces objets pour les transporter dans un camion.

3. Pourquoi UTF-8 est-il devenu la norme ?



Il existe plusieurs méthodes d'encodage pour stocker les caractères Unicode, telles que UTF-16, UTF-32, etc. Cependant, plus de 98 % du monde du web utilise UTF-8.

La raison du succès de UTF-8 est son incroyable efficacité en termes de 'longueur variable'. Il attribue de l'espace de stockage (Octets) différemment selon le type de caractère.

Type de caractère Exemple Numéro Unicode Taille de stockage UTF-8 Caractéristiques
Latin de base A $U+0041$ 1 Octet 100% compatible avec le code ASCII
Langues du Moyen-Orient / d'Europe Ω, ¶ $U+03A9$ 2 Octets Extension latine, grec, etc.
CJK (Corée, Chine, Japon) 한, 中, あ $U+D55C$ 3 Octets Caractères d'Asie en majorité
Émojis / langues anciennes 🚀 $U+1F680$ 4 Octets Caractères qui dépassent les dimensions traditionnelles

Avantages de UTF-8

  1. Compatibilité avec ASCII: Lorsque le document est en anglais, la taille est identique à celle du code ASCII, garantissant une compatibilité parfaite avec les systèmes existants.

  2. Efficacité: Les lettres et chiffres couramment utilisés sont stockés avec 1 octet, tandis que les caractères complexes sont stockés de manière plus longue pour optimiser l'espace total.

4. Points de vigilance pour les développeurs face à Unicode

Contrairement à l'époque où les caractères étaient uniquement en 1 octet (ASCII), dans un environnement Unicode, il est important de prêter attention au "longueur de la chaîne" lors de son calcul.

  • Du point de vue de la mémoire (Octet) : 'A' compte pour 1, tandis que '한' compte pour 3.

  • Du point de vue du caractère : 'A' est un caractère, tout comme '한' est également un caractère.

Si l'on utilise des méthodes anciennes pour couper ou stocker des chaînes, cela pourrait entraîner la perte de données si un caractère multibyte (tel que le coréen ou les idéogrammes) est coupé en deux. C'est pourquoi les langages de programmation modernes intègrent généralement des bibliothèques pour un traitement automatique de Unicode.


Résumé

  1. Unicode: un standard international qui attribue un numéro unique (Code Point) à chaque caractère du monde.

  2. Objectif: Unifier les méthodes d'encodage qui différaient d'une zone linguistique à l'autre pour résoudre le problème des caractères corrompus (Mojibake).

  3. UTF-8: La méthode la plus efficace pour stocker Unicode. Les caractères anglais prennent 1 octet, tandis que les caractères chinois/japonais/coréens prennent 3 octets.

Unicode est bien plus qu'une norme technique, il constitue une infrastructure numérique inclusive du XXIe siècle, permettant l'échange d'informations entre le monde entier sans barrière linguistique.


🚀 À venir dans le prochain article

Maintenant que nous savons comment nous stockons les textes (encodage), il est temps de voir comment gérer les données de manière plus intelligente. "Comment les images sont-elles stockées sous forme de 0 et 1 ?" Nous allons expliquer de manière très simple les concepts de pixels, de résolution, et du principe des couleurs RGB.

👇 Articles recommandés à lire ensemble


Si vous avez trouvé cet article utile, n'oubliez pas de vous abonner pour ne pas manquer d'autres discussions sur les technologies IT !