unicode(7) Miscellaneous Information Manual unicode(7)
BEZEICHNUNG
Unicode - universeller Zeichensatz
BESCHREIBUNG
Die internationale Norm ISO/IEC 10646 definiert den Universal Character
Set (UCS). UCS enthalt samtliche Zeichen aller anderen
Zeichensatz-Standards. Er garantiert auch >>round-trip compatibility<<;
mit anderen Worten konnen Konvertierungstabellen so erstellt werden,
dass beim Konvertieren einer Zeichenkette zwischen einer anderen
Kodierung und UCS keinerlei Information verlorengeht.
Mit den in UCS enthaltenen Zeichen konnen praktisch alle bekannten
Sprachen dargestellt werden. Dies umfasst nicht nur die lateinische,
griechische, kyrillische, hebraische, arabische, armenische und
georgische Schrift, sondern auch chinesische, japanische und
koreanische Han-Ideogramme sowie Schriften wie Hiragana, Katakana,
Hangul, Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu,
Kannada, Malayalam, Thai, Lao, Khmer, Bopomofo, Tibetisch, Runen,
Athiopisch, Canadian Syllabics (fur die Sprachen kanadischer
Ureinwohner), Cherokee, Mongolisch, Ogham, Birmanisch, Sinhala, Thaana,
Yi und andere. Fur noch nicht abgedeckte Schriften wird weiter daran
geforscht, wie sie am besten fur Computernutzung kodiert werden. Eines
Tages werden auch sie aufgenommen werden. Dazu konnten nicht nur
Hieroglyphen und verschiedene historische indoeuropaische Sprachen
gehoren, sondern auch einige ausgewahlte Kunstsprachen wie Tengwar,
Cirth und Klingonisch. UCS umfasst auch eine grosse Anzahl von
grafischen, typografischen, mathematischen und wissenschaftlichen
Symbolen, einschliesslich den von TeX, PostScript, APL, MS-DOS,
MS-Windows, Macintosh, OCR-Schriften zur Verfugung gestellten, ebenso
wie die Schriften vieler Textverarbeitungs- und Publishing-Systeme. Und
es kommen weitere hinzu.
Die UCS-Norm (ISO/IEC 10646) beschreibt eine
31-Bit-Zeichensatzarchitektur. Sie besteht aus 128 24-Bit-Gruppen, die
jeweils in 256 16-Bit-Ebenen aus 256 8-Bit-Reihen mit 256 Spalten (eine
fur jedes Zeichen) aufgeteilt sind. Teil 1 der Norm (ISO/IEC 10646-1)
definiert die ersten 65534 Code-Positionen (0x0000 bis 0xfffd), welche
die Basic Multilingual Plane (BMP) bilden, also Ebene 0 in der Gruppe
0. Teil 2 der Norm (ISO/IEC 10646-2) fugt der Gruppe 0 Zeichen
ausserhalb der BMP in mehreren erganzenden Ebenen im Bereich 0x10000
bis 0x10ffff zu. Es ist nicht geplant, der Norm Zeichen jenseits von
0x10ffff hinzuzufugen. Damit wird in absehbarer Zukunft aus dem
gesamten Code-Raum nur ein kleiner Teil der Gruppe 0 tatsachlich
verwendet werden. Die BMP enthalt alle Zeichen anderer haufig
verwendeter Zeichensatze. Die Erganzungsebenen nach ISO/IEC 10646-2
decken nur eher exotische Zeichen fur spezielle Anforderungen in der
Wissenschaft, dem Druck von Worterbuchern, dem Verlagswesen und
ubergeordneten Protokollen sowie von Enthusiasten ab.
Die Darstellung jedes einzelnen UCS-Zeichens als 2-Byte-Wort wird als
die UCS-2-Form (nur fur BMP-Zeichen) bezeichnet, wahrend UCS-4 die
einzelnen Zeichen durch ein 4-Byte-Wort darstellt. Daruber hinaus gibt
es die zwei Codierungsformen UTF-8 fur Abwartskompatibilitat mit
ASCII-Software und UTF-16 fur die abwartskompatible Bearbeitung von
Nicht-BMP-Zeichen bis 0x10FFFF durch UCS-2-Software.
Die UCS-Zeichen 0x0000 bis 0x007f sind mit denen des klassischen
US-ASCII-Zeichensatzes und die Zeichen im Bereich von 0x0000 bis 0x00ff
mit denen des ISO/IEC-8859-1-Latin-1-Zeichensatzes identisch.
Kombinationszeichen
Einige Code-Punkte von UCS wurden sogenannten Kombinationszeichen
(combining characters) zugewiesen. Sie sind mit den Akzenttasten auf
Schreibmaschinen vergleichbar, bei denen sich die Schreibposition nicht
verandert. Ein Kombinationszeichen fugt dem vorhergehenden Zeichen
einfach einen Akzent hinzu. Den wichtigsten Zeichen mit Akzenten wurden
eigene Codes im UCS zugewiesen. Mit dem Mechanismus der
Kombinationszeichen konnen Akzente und andere diakritische Markierungen
zu jedem beliebigen Zeichen hinzugefugt werden. Kombinationszeichen
folgen immer dem Zeichen, das sie verandern. Zum Beispiel kann das
deutsche >>A<< (oder >>Latin capital letter A with diaeresis<<)
entweder durch den festen UCS-Code 0x00c4 oder alternativ als
Kombination des normalen >>A<< (>>Latin capital letter A<<) gefolgt vom
Kombinationszeichen fur >>doppelt gepunktet<< (combining diaeresis) als
0x0041 0x0308 dargestellt werden.
Kombinationszeichen sind wesentlich zum Beispiel fur die Codierung der
Thai-Schrift, fur den Satz mathematischer Formeln und Nutzer der
internationalen Lautschrift.
Implementierungsstufen
Da nicht erwartet wird, dass alle Systeme komplexere Mechanismen wie
Kombinationszeichen unterstutzen, beschreibt ISO/IEC 10646 die
folgenden drei Implementierungsstufen fur UCS:
Stufe 1 Kombinationszeichen und Hangul-Jamo (eine Kodierungsvariante
der koreanischen Schrift, in der Zeichen fur Hangul-Silben als
zwei- oder dreistellige Vokal-/Konsonanten-Kombinationen
codiert werden) werden nicht unterstutzt.
Stufe 2 Zusatzlich zu Stufe 1 sind Kombinationszeichen jetzt fur
einige Sprachen, in denen sie unerlasslich sind (z. B. Thai,
Lao, Hebraisch, Arabisch, Devanagari, Malayalam) erlaubt.
Stufe 3 Alle UCS-Zeichen werden unterstutzt.
Der vom Unicode Consortium veroffentlichte Standard Unicode 3.0 enthalt
genau die >>UCS Basic Multilingual Plane<< auf der
Implementierungsstufe 3, wie in ISO/IEC 10646-1:2000 beschrieben.
Unicode 3.1 fugte die zusatzlichen Ebenen von ISO/IEC 10646-2 hinzu.
Der Unicode-Standard und vom Unicode Consortium veroffentlichte
technische Berichte bieten viele zusatzliche Informationen uber die
Semantik und die empfohlene Verwendung der verschiedenen Zeichen. Sie
geben Richtlinien und Algorithmen fur die Bearbeitung, das Sortieren,
Vergleichen, Normalisieren, Umwandeln und Anzeigen von
Unicode-Zeichenketten.
Unicode unter Linux
Unter GNU/Linux ist der C-Datentyp wchar_t ein vorzeichenbehafteter
32-Bit-Ganzzahl-Typ. Seine Werte werden von der C-Bibliothek immer (in
allen Locales) als UCS-Codewerte interpretiert. Diese Konvention
signalisiert die GNU-C-Bibliothek Anwendungen durch die Definition der
Konstante __STDC_ISO_10646__, wie es im ISO-C99-Standard spezifiziert
ist.
UCS/Unicode in der ASCII-kompatiblen UTF-8-Multibyte-Codierung kann wie
ASCII in Ein-/Ausgabe-Datenstromen, zur Terminal-Kommunikation, in
Klartext-Dateien, Dateinamen und Umgebungsvariablen verwendet werden.
Um allen Anwendungen die Verwendung von UTF-8 als Zeichencodierung
bekannt zu geben, muss mittels Umgebungsvariablen (z.B.
>>LANG=en_GB.UTF-8<<) eine geeignete Locale festgelegt werden.
Die Funktion nl_langinfo(CODESET) gibt den Namen der ausgewahlten
Codierung zuruck. Mit Bibliotheksfunktionen wie wctomb(3) und
mbsrtowcs(3) konnen die internen wchar_t-Zeichen und Zeichenketten in
die System-Zeichenkodierung konvertiert werden (und auch wieder
zuruck). wcwidth(3) gibt an, wie viele Positionen (0>2) der Cursor
durch die Ausgabe eines Zeichens weitergesetzt wird.
Bereich fur private Nutzung (PUA)
In der >>Basic Multilingual Plane<< werden dem Bereich 0xe000 bis
0xf8ff niemals Zeichen vom Standard zugewiesen werden - er ist fur
private Nutzung reserviert. Fur die Linux-Gemeinde wurde dieser
Privatbereich weiter unterteilt in den Bereich 0xe000 bis 0xefff, der
vom Endbenutzer individuell benutzt werden kann, und den Linux-Bereich
von 0xf000 bis 0xf8ff, in dem koordiniert gemeinsame Erweiterungen
aller Linux-Benutzer abgelegt werden. Die Registrierung der der
Linux-Zone zugeordneten Zeichen wird von LANANA betreut und die
Registrierung selbst befindet sich in
Documentation/admin-guide/unicode.rst in den Linux-Kernelquellen (oder
Documentation/unicode.txt vor Linux 4.10).
Zwei weitere Ebenen sind fur die private Nutzung reserviert: Ebene 16
(>>Supplementary Private Use Area-A<<, Bereich 0xf0000 bis 0xffffd) und
Ebene 16 (>>Supplementary Private Use Area-B<<, Bereich 0x100000 bis
0x10fffd).
Literatur
o Information technology - Universal Multiple-Octet Coded Character
Set (UCS) - Part 1: Architecture and Basic Multilingual Plane.
Internationale Norm ISO/IEC 10646-1, International Organization for
Standardization, Genf, 2000.
Dies ist die offizielle UCS-Spezifikation. Verfugbar unter
.
o The Unicode Standard, Version 3.0. The Unicode Consortium,
Addison-Wesley, Reading, MA, 2000, ISBN 0-201-61633-5.
o S. Harbison, G. Steele. C: A Reference Manual. Fourth edition,
Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.
Ein gutes Fachbuch uber die Programmiersprache C. Die vierte Auflage
behandelt jetzt auch den Nachtrag (Amendment) 1 von 1994 zur
ISO-C-Norm (ISO/IEC 9899:1990), der eine grosse Anzahl neuer
C-Bibliotheksfunktionen zum Umgang mit Zeichensatzen von mehr als 8
Bit pro Zeichen hinzufugt. Das Buch behandelt aber noch nicht die
ISO-C99-Norm, welcher die Unterstutzung von Multibyte-Zeichen weiter
verbesserte.
o Technische Unicode-Berichte
o Markus Kuhn: UTF-8 and Unicode FAQ for UNIX/Linux.
o Bruno Haible: Unicode HOWTO
SIEHE AUCH
locale(1), setlocale(3), charsets(7), utf-8(7)
UBERSETZUNG
Die deutsche Ubersetzung dieser Handbuchseite wurde von Johnny Tevessen
und Martin Eberhard Schauer
erstellt.
Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General
Public License Version 3
oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG
ubernommen.
Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden,
schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer
.
Linux man-pages 6.9.1 2. Mai 2024 unicode(7)