Le cas curieux de la longueur des emojis en JavaScript : UTF-8, UTF-16, UTF-32 et grappes de graphèmes

2025-08-22

Cet article explore les divergences de longueur des chaînes de caractères emoji dans différents langages de programmation. Par exemple, en JavaScript, « 🤦🏼‍♂️ ».length est égal à 7, tandis qu’il est égal à 5 en Python et à 17 en Rust. Cela provient des variations dans la manière dont les langages gèrent l’encodage des chaînes (UTF-16, UTF-8, etc.) et les unités de caractères (valeurs scalaires Unicode, grappes de graphèmes étendues, etc.). L’auteur soutient qu’il est raisonnable de mémoriser la longueur dans l’encodage natif, mais que les autres longueurs (comme les grappes de graphèmes étendues) doivent être calculées à la demande pour éviter une surcharge de stockage inutile et des problèmes de synchronisation. L’article analyse également les avantages et les inconvénients des différents schémas d’encodage, soulignant les avantages de l’UTF-8 en matière de stockage et d’échange. Enfin, il aborde la question des quotas de longueur équitables, en démontrant qu’il n’existe pas de méthode simple pour mesurer équitablement la densité d’information dans différentes langues, en illustrant cela à l’aide de traductions de la Déclaration universelle des droits de l’homme.

Lire plus
Développement Encodage de chaînes