Der kuriose Fall der Emoji-Länge in JavaScript: UTF-8, UTF-16, UTF-32 und Graphemcluster
Dieser Artikel untersucht die Diskrepanzen in der Länge von Emoji-Strings in verschiedenen Programmiersprachen. Beispielsweise ist in JavaScript „🤦🏼♂️“.length gleich 7, während es in Python 5 und in Rust 17 ist. Dies rührt von Unterschieden in der Art und Weise her, wie Sprachen Zeichenkodierungen (UTF-16, UTF-8 usw.) und Zeicheneinheiten (Unicode-Skalarwerte, erweiterte Graphemcluster usw.) verarbeiten. Der Autor argumentiert, dass es sinnvoll ist, die Länge in der nativen Kodierung zu speichern, aber andere Längen (wie erweiterte Graphemcluster) sollten bei Bedarf berechnet werden, um unnötigen Speicheraufwand und Synchronisierungsprobleme zu vermeiden. Der Artikel analysiert auch die Vor- und Nachteile verschiedener Kodierungsschemata und hebt die Vorteile von UTF-8 in Bezug auf Speicherung und Austausch hervor. Schließlich wird das Problem fairer Längenquoten behandelt, wobei gezeigt wird, dass es keine einfache Möglichkeit gibt, die Informationsdichte in verschiedenen Sprachen fair zu messen, was anhand von Übersetzungen der Allgemeinen Erklärung der Menschenrechte veranschaulicht wird.