Inhalt:
1 Die Idee hinter Unicode
2 Grundkonzepte von Unicode
2.1 Zeichen und Codepunkte
2.2 Unicode-Ebene
2.3 Codeelemente
2.4 Proxy-Paare
2.5 Kombinieren von Zeichen
3 Unicode in JavaScript
3.1 Escape-Sequenzen
3.2 String-Vergleich
3.3 String-Länge
3.4 Zeichenpositionierung
3.5 Reguläre Übereinstimmung
4 Fazit
1. Unicode Die Idee hinter
Stellen Sie zunächst die grundlegendste Frage: Wie haben Sie diesen Artikel gelesen und verstanden? Die Antwort ist einfach, denn Sie verstehen die Bedeutung dieser Wörter und die Wörter, aus denen sie bestehen.
Wie verstehen Sie dann die Bedeutung dieser Wörter? Auch die Antwort ist einfach, denn Sie (der Leser) und ich (der Autor) haben das gleiche Verständnis für den Zusammenhang zwischen diesen Grafiken (auf dem Bildschirm dargestellt) und den chinesischen Schriftzeichen (also der Bedeutung).
Für Computer ist dieses Prinzip ähnlich, mit einem Unterschied: Der Computer versteht nicht die Bedeutung dieser Wörter (Buchstaben), sondern versteht sie nur als eine bestimmte Folge von Bits.
Stellen wir uns ein Szenario vor: Computerbenutzer1 sendet eine Nachricht „Hallo“ an Computerbenutzer2.
Der Computer weiß nicht, was diese Buchstaben bedeuten. Computer Benutzer1 wandelt also die Nachricht „Hallo“ in eine Zahlenfolge 0x68 0x65 0x6C 0x6C 0x6F um, wobei jeder Buchstabe einer Zahl entspricht: h entspricht 0x68, e entspricht 0x65 und so weiter.
Senden Sie diese Nummern dann an den Computer Benutzer2.
Nachdem Computer Benutzer2 die digitale Sequenz 0x68 0x65 0x6C 0x6C 0x6F empfängt, verwendet er denselben Satz von Buchstaben und Zahlen, um den Nachrichteninhalt zu rekonstruieren, und „Hallo“ kann korrekt angezeigt werden.
Die Vereinbarung zwischen verschiedenen Computern über die Entsprechung zwischen Buchstaben und Zahlen ist das Ergebnis der Unicode-Standardisierung.
Laut Unicode ist h ein abstraktes Zeichen mit dem Namen LATEINISCHER KLEINBUCHSTABE H. Dieses abstrakte Zeichen entspricht der Zahl 0x68, einem Codepunkt mit der Bezeichnung U 0068. Diese Konzepte werden im nächsten Kapitel erläutert.
Die Rolle von Unicode besteht darin, eine abstrakte Zeichenliste (Zeichensatz) bereitzustellen und jedem Zeichen einen eindeutigen Identifikationscodepunkt (codierten Zeichensatz) zuzuweisen.
2. Grundkonzepte von Unicode
www.unicode.org erwähnte Website:
Unicode weist jedem Zeichen eine proprietäre Nummer zu
Keine Plattform
Programmunabhängig
Sprachunabhängig
Unicode ist ein weltweiter Zeichensatz, der die Zeichensätze der meisten Schriftsysteme auf der ganzen Welt definiert und jedem Zeichen ein eindeutiges Zeichen zuweist Nummer (Codepunkt).
Unicode umfasst die meisten modernen Sprachen, Satzzeichen, diakritische Zeichen (diakritische Zeichen), mathematische Symbole, technische Symbole, Pfeile und Emoticons usw.
Die erste Version von Unicode 1.0 wurde im Oktober 1991 veröffentlicht und enthielt 7161 Zeichen. Die neueste Version 9.0 (veröffentlicht im Juni 2016) bietet eine Kodierung von 128172 Zeichen.
Die Vielseitigkeit und Offenheit von Unicode löst ein in der Vergangenheit bestehendes Problem: Anbieter implementieren unterschiedliche Zeichensätze und Kodierungsregeln, was schwer zu bewältigen ist.
Eine Anwendung zu erstellen, die alle Zeichensätze und Kodierungsregeln unterstützt, ist sehr komplex. Ganz zu schweigen davon, dass die von Ihnen gewählte Kodierung möglicherweise nicht alle benötigten Sprachen unterstützt.
Wenn Sie Unicode für schwierig halten, denken Sie einfach daran, wie viel schwieriger es wäre, ohne Unicode zu programmieren.
Ich erinnere mich noch an die Zeit, als ich zufällig den erforderlichen Zeichensatz und die Kodierungsregeln auswählte, um den Inhalt einer Datei zu lesen. Es hängt alles vom Charakter ab!
2.1 Zeichen und Codepunkte
Abstrakte Zeichen (d. h. Textzeichen) sind Informationseinheiten, die zum Organisieren, Verwalten oder Darstellen von Textdaten verwendet werden.
Zeichen in Unicode sind ein abstraktes Konzept. Jedes abstrakte Zeichen hat einen entsprechenden Namen, z. B. den LATEINISCHEN KLEINBUCHSTABEN A. Die grafische Darstellung (Glyphe) dieses abstrakten Zeichens ist a. (Anmerkung des Übersetzers: Glyphe ist ein Bildzeichen)
Codepunkt bezieht sich auf die einem abstrakten Zeichen zugewiesene Nummer
Codepunkt wird in der Form U ausgedrückt
Der Wertebereich der Codepunkte reicht von U 0000 bis U 10FFFF.
Denken Sie daran, dass ein Codepunkt eine einfache Zahl ist. Bedenken Sie dies, wenn Sie über Unicode nachdenken.
Codepunkte sind wie Indizes von Array-Elementen.
Die Magie von Unicode besteht darin, Codepunkte mit abstrakten Zeichen zu verknüpfen. Beispielsweise heißt das abstrakte Zeichen, das U 0041 entspricht, LATEINISCHER GROSSBUCHSTABE A (dargestellt als A) und das abstrakte Zeichen, das U 2603 entspricht, heißt SCHNEEMANN (dargestellt als ☃)
Beachten Sie, dass nicht alle Codepunkte haben entsprechende abstrakte Zeichen. Es stehen 114112 Codepunkte zur Verfügung, es werden jedoch nur 128237 abstrakte Zeichen zugewiesen.
2.2 Unicode-Ebene
Die Ebene bezieht sich auf das Intervall von U n0000 bis U nFFFF, also 65536 (1000016) aufeinanderfolgende Unicode-Codepunkte. Der Wertebereich von n liegt zwischen 016 und 1016.
Diese Ebenen unterteilen Unicode-Codepunkte in 17 gleich große Sätze:
Ebene 0 enthält Codepunkte von U 0000 bis U FFFF
Ebene 1 enthält Codepunkte von U-Code Punkte von **1**0000 bis U **1**FFFF
...
Ebene 16 enthält Codepunkte von U **10**0000 bis U **10* * Codepunkte für FFFF
Basic Multilingual Plane
Plane 0 ist etwas Besonderes und wird Basic Multilingual Plane oder kurz BMP genannt. Es enthält Zeichen für die meisten modernen Sprachen (Grundkenntnisse Latein, Kyrillisch, Griechisch usw.) und eine große Anzahl von Symbolen.
Wie oben erwähnt, reicht der Codepunktwertbereich der grundlegenden mehrsprachigen Ebene von U 0000 bis U FFFF und kann bis zu 4 Hexadezimalziffern haben.
Die meiste Zeit beschäftigen sich Entwickler mit Charakteren in BMP. Es enthält in den meisten Fällen die erforderlichen Zeichen.
Einige Zeichen in BMP:
e entspricht Codepunkt U 0065 Abstrakter Zeichenname: LATEINISCHER KLEINBUCHSTABE E
|entspricht Codepunkt U 007C Abstrakter Zeichenname: VERTIKAL BAR
■Entsprechender Codepunkt U 25A0 Abstrakter Charaktername: BLACK SQUARE
☂Entsprechender Codepunkt U 2602 Abstrakter Charaktername: UMBRELLA
Starlight Plane
BMP Die nächsten 16 Ebenen (Ebene 1, Ebene 2, ..., Ebene 16) werden Astralebenen oder Hilfsebenen genannt.
Die Codepunkte der Astralebene werden Astralcodepunkte genannt. Diese Codepunkte reichen von U 10000 bis U 10FFFF.
Starlight-Codepunkte können 5 oder 6 hexadezimale Ziffern haben: U ddddd oder U dddddd.
Werfen wir einen Blick auf einige Charaktere auf der Astralebene: