WikiDer > Unicode

Unicode

Unicode ist ein internationaler Standard (in engem Zusammenhang mit ISO-10646) zur Codierung von grafischen Zeichen und Symbolen in Binärcodes, ähnlich dem ASCII-Standard. Der Standard versieht alle Zeichen aller Schriftsprachen mit einem Namen (im Standard in Großbuchstaben geschrieben) und einer Nummer (oft hexadezimal geschrieben, mit vorangestelltem U). Zum Beispiel gibt es das Zeichen lateinischer Großbuchstabe A mit der Nummer U 0041 (65), getrennt vom Schriftarten in dem es angezeigt werden kann. Die grafische Darstellung pro Schriftart ist nicht Bestandteil des Standards.

Der Standard wird von der Unicode-Konsortium. Im Gegensatz zu ASCII (nur Englisch) oder Latein-1 (nur Westeuropäisch Sprachen) Unicode hat als Ziel alle verwendeten Notizbücher (mag ich griechisch schreiben und Chinesisch Zeichen) unterstützen. Der Standard enthält über 100.000 standardisierte Zeichen und ungefähr 900.000 Codes, die für die zukünftige Verwendung reserviert sind. Der Unicode-Standard schreibt nichts über die visuelle Darstellung eines Zeichens vor.

Unicode-Logo

Unicode begrenzt nicht die Anzahl der Sprachen, die in einem einzelnen Dokument verwendet werden können. Unicode enthält neben Buchstaben und Zahlen auch viele Symbole, wie zum Beispiel: Kreuze, mathematische Zeichen, Währungssymbole usw. Unicode enthält keine Symbole, die nicht schriftlich verwendet werden, wie beispielsweise Straßenschilder. Einige "Zeichen" in Unicode sind selbst keine grafischen Zeichen, sondern haben eine Bedeutung für die Art und Weise, wie die sichtbaren Zeichen platziert werden, wie z Wagenrücklauf, Zeilenvorschub, Platz und das geschützte Leerzeichen (harter Raum, NBSP).

Ein Nebeneffekt der Konvertierung von anders kodierten Daten ist, dass die Sortierung nach numerischer Reihenfolge ein anderes Ergebnis (Leerzeichen, numerisch, Großbuchstaben, Kleinbuchstaben (SNUL)) ergibt als beispielsweise EBCDIC (Leerzeichen, Kleinbuchstaben, Großbuchstaben, numerisch (=SLUN)) erhält man, weil die Zeichen anders angeordnet sind.

Geschichte

Bei den ersten Computern waren alle Texte (Programme sowie Ein- und Ausgabe) in Großbuchstaben, mit weiteren Zeichen Zahlen, Satzzeichen und dergleichen, siehe zum Beispiel GBCD. Später wurden Kleinbuchstaben hinzugefügt, siehe zum Beispiel ASCII. Dieser 7-Bit-Code (8-Bits bilden 1 Byte) enthält nur die lateinische Buchstaben ohne diakritische Zeichen. Es lag daher nahe, ASCII auf . zu erweitern erweiterte ASCII mit einem achten Bit, aber es war nicht genug Platz für alle Zeichen in allen lateinischen Schriftsprachen. Daher haben viele Sprachen ihre eigene Variante von erweitertem ASCII bekommen und es gab auch EBCDIC. Es gibt keine Standardmethode, um anzugeben, welche Variante verwendet wird, dies geschieht in HTML anders als in Email, und in flacher Text es ist sicherlich nicht möglich, was eine Menge Verwirrung der Zungen verursacht.

Für viele Schriften, wie z Chinesisch, Arabisch und Japanische Schrift, 256 Zeichen sind nicht genug. Diese umfangreicheren Zeichensätze haben traditionell bereits andere Kodierungen verwendet, die Platz für mehr Zeichen enthalten.

Trotz all dieser unterschiedlichen Codierungen für die verschiedenen Sprachen war es noch nicht möglich, Fremdsprache schreiben. Wenn man in einem chinesischen Text vom . spricht Arabisch schreiben wollte, konnte man dies in der chinesischen Standardcodierung nicht tun: die arabischen Buchstaben sind darin nicht enthalten. Unicode und die dafür verfügbaren Codierungen bieten eine Lösung für all diese Probleme.

Versionen

Der Unicode-Standard entstand auf Initiative einer Reihe von Organisationen, die Ordnung im Chaos der Zeichenkodierungen schaffen wollten. Im 1991 Sie brachten ihren ersten Standard auf den Markt: Unicode 1.0.

Unicode 1.1 hatte Platz für 65.536 (= 216) Zeichen. Es stellte sich jedoch heraus, dass diese Zahl zu gering war, um alle Schriften der Welt zu unterstützen. Nur so existiert es Chinesisch Schrift besteht bereits aus etwa 25.000 Zeichen.

In Unicode 2.0 wurde die Anzahl der Codes auf über eine Million erweitert, siehe auch unten.

AusführungDatumAnzahl von CharakterenISBNHinweis
1.0Oktober 19917.1610-201-56788-1 Erste Version mit Arabisch, Armenisch, Bengali, Bopomofo, kyrillisch, Devanagari, georgisch, griechisch mit koptisch, Gujarat, Gurmukhi, Hangul, hebräisch, Hiragana, Kanada, Katakana, Laos, Latein, Malayalam, Odia, tamilisch, Telugu, Thai und Tibetisch.
1.0.1Juni 199228.3590-201-56788-1 Anzahl der zum Abgleich hinzugefügten Zeichen ISO/IEC 10646-1. Dies sind die "CJK"-Zeichen für die chinesischen, japanischen und koreanischen Schriften.
1.1Juni 199334.233Neue Charaktere hinzugefügt, um den aktualisierten zu entsprechen ISO/IEC 10646-1. Das hält mehr HangulZeichen.
2.0Juli 199638.9500-201-48345-9 Erste Version von Unicode, die mehr als 65.536 Zeichen unterstützt. Die Hangul-Zeichen wurden entfernt und eine größere Zeichenfolge an einer anderen Stelle erneut hinzugefügt.
2.1Mai 199838.952Eurozeichen hinzugefügt
3.0September 199949.2590-201-61633-5 u.a. Cherokee, Khmer, mongolisch, birmanisch, Ogham, ...
3.1März 200194.205Viele chinesische Schriftzeichen (CJK) hinzugefügt
3.2März 200295.221Einige philippinische Skripte hinzugefügt (einschließlich Baybayin)
4.0April 200396.4470-321-18578-1 Hexagramm-Symbole, Linear B, ...
4.1März 200597.720u.a. Tifinagh hinzugefügt
5.0Juli 200699.0890-321-48091-0 Balinesisch, Keilschrift, N'Ko, ... hinzugefügt
5.1April 2008100.713u.a. Sundanesisch, saurashtra, ... und auch Zeichen für Mahjong und Domino und der Scheibe von Phaistos
5.2Oktober 2009107.296978-1-936213-00-9 u.a. Avestisch, bamoun, ...
6.0Oktober 2010109.242978-1936213-01-6 2088 neue Charaktere, unter anderem Batak, Brahmi, Mandala und einige Symbole und Emoticons
6.1Januar 2012110.181unter anderem Chakma, Sharada, ... hinzugefügt
6.2September 2012110.182ISO/IEC 10646: 2012 Das Zeichen der türkischen Lira hinzugefügt
6.3September 2013110.1876 neue Charaktere
7.0Juni 2014113.021Bassa, Kaukasischer Albaner, Duployan, Elbasan, Grantha, khojki, Chudabadic, Linear A, Mahajanic, Manichäes, Mende Kikakuic, Modi, Moro, Nabatäer, Altes Nordarabisch, Altes Perm, Pahawh Hmong, Palmyren, Pau Cin Hau, Psalter Pahlavi, Siddhaṃ, tirhuta, Stadt Warang, dingbats.
8.0Juni 2015120.737u.a. Ahom, Anatolische Hieroglyphen, Hatran, Multanic, Alt-Ungarisch, Gebärdenschreiben
9.0Juni 2016128.237u.a. Adam, Bhaiksuki, Marken, Newa, Osage, Tangut
10.0Juni 2017136.755u.a. Masaram Gondic, nushu, Soja, Hentaigana, Bitcoin
11.0Juni 2018137.374u.a. dogri, Hanifi Rohingya, Copyleft[1]
12.0März 2019137.993u.a. laotisches Skript, Erweiterungen tamilisch, Hiragana und Katakana
13.0März 2020143.924u.a. Yeziden, Chorasmisch, Divehi Akuru, Kitan; 55 neue Emojis

Codierung

Der Unicode-Standard weist jedem Zeichen eine Zahl zu, Codepunkt genannt, was geschrieben wird U xxx, in dem die X'und der hexadezimal Ziffern des Codepunktes (mindestens vier, ggf. mit führenden Nullen, maximal sechs). Die Codepunkte, die mit einem Zeichen verknüpft sind oder sein können (die sogenannten Unicode-Skalarwerte) reichen von U 0000 (0) bis U D7FF (55.295) und von U E000 (57.344) bis U 10FFFF (1.114.111). Das sind 55.296 8.192 = 63.488 (0xF800) Zeichen mit einem Codepunkt bis einschließlich zwei Bytes plus 1.048.576 (0x100000) weitere, insgesamt 1.112.064 (0x10F800). Der Break besteht aus 2048 (0x800) Codepunkten, die nicht für den Vorteil der UTF-16-Codierung verwendet werden; Sie werden Ersatzcodepunkte erwähnt.

Unicode bietet verschiedene Kodierungsformen (Kodierungsformen), um die Skalarwerte darzustellen, einschließlich:

  • UTF-32: Eine Codeeinheit (Codeeinheit) hat 32 Bit. Zeichen werden in einer Codeeinheit gespeichert. Ein Nachteil ist, dass selbst kleine Skalarwerte vier Bytes benötigen.
  • UTF-16: Eine Codeeinheit hat 16 Bit. Zeichen werden in einer oder zwei Codeeinheiten gespeichert, die niedrigere in einer, die höhere in zwei. UTF-16 ist eine Erweiterung von UCS-2, die Kodierung von Unicode bis Version 1.1. Die in zwei Codeeinheiten gespeicherten Zeichen verwenden nur die 2048 16-Bit-Zahlen, die nicht separat für die Zeichenspeicherung verwendet werden. Damit bleiben 63.488 16-Bit-Zahlen zum Speichern eines Zeichens in einer Codeeinheit übrig. Von den 2048 aufgeführten 16-Bit-Zahlen werden 1024 ausschließlich als erste der beiden 16-Bit-Zahlen verwendet, die ein Zeichen darstellen, und 1024 nur als zweite, was 1.048.576 Kombinationen für ebenso viele Skalarwerte ergibt. Eine solche Kombination wird a Ersatzpaar erwähnt.
  • UTF-8: Eine Codeeinheit hat 8 Bit. Zeichen werden in ein bis vier Codeeinheiten gespeichert, je größer der Skalarwert, desto mehr. Die in zwei bis vier Codeeinheiten gespeicherten Zeichen verwenden nicht die 128 8-Bit-Zahlen, die einzeln zum Speichern eines Zeichens verwendet werden. Von den verbleibenden 128 8-Bit-Zahlen werden 64 ausschließlich für die nachfolgenden 8-Bit-Zahlen für Zeichen verwendet, die in zwei bis vier Codeeinheiten gespeichert sind. Von den verbleibenden 64 8-Bit-Zahlen werden 32 nur für die erste 8-Bit-Zahl für die 1920 in zwei Codeeinheiten gespeicherten Zeichen verwendet, 16 nur für die erste 8-Bit-Zahl für die 61.440 Zeichen, die in drei Codeeinheiten gespeichert sind, 8 nur für die erste 8-Bit-Zahl für die 1.048.576 Zeichen, die in vier Codeeinheiten gespeichert sind, und 8 ungenutzt. Bei dieser Codierung werden ASCII-Zeichen unverändert codiert und benötigen daher weniger Speicher als UTF-16 (eins statt zwei Bytes), aber eher große Skalarwerte benötigen mehr Speicher (drei statt zwei Bytes).
Codebereich
hexadezimal
UTF-32
binär
UTF-16
binär
UTF-8
binär
Bemerkungen
U 0000..U 007F
(128 = 0x80 ASCII-Äquivalente)
00000000 00000000
00000000 0aaaaaa
00000000 0aaaaaa0aaaaaa
U 0080..U 07FF
(1.920 = 0x780 Skalarwerte)
00000000 00000000
00000bbb aaaaaaaa
00000bbb aaaaaaaa110bbba 10aaaaaa
U 0800..U D7FF und U E000..U FFFF
(61.440 = 0xF000 Skalarwerte, die restlichen im in Einfaches mehrsprachiges Flugzeug)
00000000 00000000
bbbbbbbb aaaaaaaaa
bbbbbbbb aaaaaaaaa1110bbbb 10bbbbaa 10aaaaaa
U 010000..U 10FFFF
(1.048.576 = 0x100000 zusätzliche Codepunkte)
00000000 000ccccc
bbbbbbbb aaaaaaaaa
110110dd ddbbbbbb
110111bb aaaaaaaa
11110ccc 10ccbbbb 10bbbbaa 10aaaaaadddd = ccccc − 1

Da Computer die Daten in einer Codeeinheit, die mehrere Bytes belegt, auf unterschiedliche Weise speichern können, gibt es zwei Varianten von UTF-32 und UTF-16, nämlich Big-Endian, wobei sich das höchstwertige Byte an der niedrigsten Adresse befindet, und kleiner endian, mit dem niederwertigsten Byte zuerst.

Die 256 Zeichen von ISO-8859-1 sind in Unicode unter den gleichen Codes enthalten: U 0000 bis U 00FF. Die zweiten 128 davon werden jedoch in Unicode in keiner der drei Kodierungen in einem Byte dargestellt. Auch andere Codepages von ISO 8859 finden Sie in Unicode, wo die ursprüngliche Zeichenreihenfolge beibehalten wird.

Sortieren

Das Sortieren von Zeichen nach dem Skalarwert in UTF-32 und UTF-8 entspricht dem Sortieren nach dem entsprechenden (Big-Endian) Bytesequenzen (in dem Sinne, dass 0x01 vor 0x00 kommt, weil 0x01 vor 0x02 kommt). Dies gilt nicht für UTF-16, wenn Zeichen aus der Basic Multilingual Plane und einer anderen Ebene verglichen werden.

Benutzen

In HTML- und XML-Dokumenten können Unicode-Zeichen eingefügt werden, die in der verwendeten Zeichenkodierung nicht unterstützt werden über Anmeldeinformationen für Charakterentitäten. Der Großbuchstabe A wird beispielsweise durch A (dezimal) oder A (hexadezimal) dargestellt.

Schriften

Im September 2020 wird Unicode Zeichen für 154 Skripte bereitstellen, darunter die folgenden:

Die Zahl der Skripte wird ständig erweitert. Viele historische Schriften sind ebenfalls enthalten. Die vollständige Liste finden Sie auf der Unicode-Website.[2]

Siehe auch

Externe Links

Siehe die Kategorie Unicode von Wikimedia Commons für Mediendateien zu diesem Thema.