22 Punkte von GN⁺ 2023-10-03 | 3 Kommentare | Auf WhatsApp teilen
  • Vor 20 Jahren betonte Joel mit den Worten „Es gibt keinen Plain Text“, dass man Encodings unbedingt verstehen muss
  • Unicode ist ein Standard, der alle menschlichen Sprachen vereinheitlicht, damit sie auf Computern verwendet werden können
  • Ein Code-Point-System, das verschiedenen Zeichen jeweils eine eindeutige Nummer zuweist
  • Der größte Code Point ist 0x10FFFF und bietet Platz für etwa 1,1 Millionen Code Points
  • UTF-8 ist das gebräuchlichste Encoding und wird mit einer Wahrscheinlichkeit von 98 % verwendet
  • UTF-8 ist ein Encoding variabler Länge, bei dem Code Points als Sequenzen von 1 bis 4 Bytes codiert werden können
  • UTF-8 ist zu ASCII auf Byte-Ebene kompatibel und für grundlegende lateinische Schriftzeichen platzsparend
  • UTF-8 verfügt über eingebaute Fehlererkennung und Wiederherstellung, sodass sich vollständige und gültige UTF-8-Byte-Sequenzen identifizieren lassen
  • Erweiterte Graphem-Cluster oder Grapheme sind die Einheiten, über die iteriert werden sollte, nicht Code Points
  • Unicode wird jedes Jahr aktualisiert, und die Regeln zur Definition von Graphem-Clustern ändern sich ebenfalls jährlich
  • Unicode kann je nach Locale unterschiedlich gerendert werden
  • Ein Surrogate Pair in Unicode besteht aus zwei UTF-16-Einheiten, die zum Encodieren eines einzelnen Unicode-Code-Points verwendet werden
  • UTF-16 wird in manchen Systemen weiterhin als In-Memory-Repräsentation verwendet
  • Unicode-Strings sollten vor dem Vergleich normalisiert werden
  • Der Artikel betont, wie wichtig es ist, selbst für grundlegende Operationen wie strlen, indexOf und substring Unicode-Bibliotheken zu verwenden

3 Kommentare

 
kimws 2023-10-04

Bei "‍♂️".length gibt Python 3.11 offenbar 1 zurück.

 
kimws 2023-10-04

Das Emoji wird im Kommentar fehlerhaft angezeigt.

 
GN⁺ 2023-10-03
Hacker-News-Kommentare
  • Dieser Artikel behandelt die Komplexität von Unicode und seine Anwendung in der Softwareentwicklung.
  • Ein Kommentator stimmt der Behauptung des Artikels nicht zu, dass „erweiterte Graphem-Cluster“ die beste Art seien, über Unicode-Zeichen nachzudenken, und argumentiert, dass die Definition von „Zeichen“ je nach beabsichtigter Verwendung variieren kann.
  • Der Kommentator schlägt vor, dass die Iteration über Strings auf Codepunkten basieren sollte, da dies die grundlegende Ebene ist, auf der Unicode funktioniert.
  • Ein anderer Kommentator lobt den Artikel und beantwortet die Frage des Autors, warum die „fi“-Ligatur einen eigenen Codepunkt hat, und erklärt, dass dies am Unicode-Prinzip der Kompatibilität mit ursprünglichen Zeichenformen liegt.
  • Ein Kommentator beschwert sich darüber, dass beim Lesen der Seite mehrere Mauszeiger auf dem Bildschirm zu sehen sind.
  • Ein anderer Kommentator diskutiert die Herausforderung, das Locale eines Computers festzulegen, wenn Nutzer mehrere Sprachen lesen und schreiben können, und kritisiert, dass Linux im Vergleich zu Windows weniger Anpassungsoptionen bietet.
  • Ein Kommentator erzählt von Problemen bei der Bereinigung von Nutzereingaben für Drittsysteme aufgrund der Art und Weise, wie diakritische Zeichen verarbeitet werden.
  • Ein anderer Kommentator widerspricht der Behauptung des Artikels, Codepunkte seien nicht die beste Einheit, mit der man arbeiten sollte, und argumentiert, dass es viele Situationen gibt, in denen die Arbeit auf Codepunkt-Ebene sinnvoll ist.
  • Ein Kommentator kritisiert das Beispiel des Artikels dazu, wie „é“ in Unicode codiert wird, und meint, es sei irreführend und nicht repräsentativ dafür, wie Zeichen normalerweise codiert werden.
  • Ein anderer Kommentator diskutiert das Problem, dass chinesische, japanische und koreanische Logogramme demselben Codepunkt zugewiesen werden, was unter Windows zu schlechter Darstellung chinesischer Dateinamen führt, wenn das System-Locale nicht auf Chinesisch eingestellt ist.
  • Ein Kommentator ist verwirrt und genervt von dem Mauszeiger-Effekt auf der Seite.