ISO/IEC 2022 Informationstechnik – Zeichenkodierungsstruktur und Erweiterungstechniken ist ein ISO / IEC- Standard im Bereich der Zeichenkodierung . Er ist äquivalent zum ECMA- Standard ECMA - 35 [ 1 ] [ 2 ] , dem ANSI- Standard ANSI X3.41 [ 3 ] und dem japanischen Industriestandard JIS X 0202. Er entstand 1971 und wurde zuletzt 1994 überarbeitet. [ 4 ]
ISO 2022 definiert eine allgemeine Struktur, an die sich Zeichenkodierungen anpassen können. Bestimmte Bytebereiche (0x00–1F und 0x7F–9F) sind für nicht druckbare Steuercodes [ 5 ] reserviert, die für Formatierungs- und In-Band-Befehle (z. B. Zeilenumbrüche oder Formatierungsbefehle für Textterminals) anstelle von grafischen Zeichen verwendet werden . ISO 2022 legt außerdem eine Syntax für Escape - Sequenzen fest – mehrbyteige Sequenzen, die mit dem Steuercode ESC beginnen und ebenfalls für In-Band-Befehle verwendet werden können. [ 6 ] Spezielle Sätze von Steuercodes und Escape-Sequenzen, die für die Verwendung mit ISO 2022 vorgesehen sind, finden sich in ISO/IEC 6429. Teile davon sind in ANSI.SYS und Terminalemulatoren implementiert .
ISO 2022 definiert zudem spezielle Steuercodes und Escape-Sequenzen, mit denen zwischen verschiedenen Zeichensätzen (z. B. zwischen ASCII und dem japanischen JIS X 0208 ) umgeschaltet werden kann, um mehrere in einem Dokument zu verwenden [ 7 ]. Dadurch werden sie effektiv zu einer einzigen zustandsbehafteten Kodierung kombiniert (ein Merkmal, das seit der Einführung von Unicode an Bedeutung verloren hat). ISO 2022 ist sowohl für 8-Bit- als auch für 7-Bit-Umgebungen (in denen nur sieben Bit pro Byte nutzbar sind, wie z. B. E-Mails ohne 8BITMIME ) geeignet [ 8 ] .
Kodierungen und Konformität
Der ASCII-Zeichensatz unterstützt das ISO-Basis-Lateinische Alphabet (entspricht dem englischen Alphabet ) und bietet keine gute Unterstützung für Sprachen mit zusätzlichen Buchstaben oder einem gänzlich anderen Schriftsystem . Andere Schriftsysteme mit relativ wenigen Zeichen, wie Griechisch , Kyrillisch , Arabisch oder Hebräisch , sowie Formen der lateinischen Schrift mit diakritischen Zeichen oder Buchstaben, die im ISO-Basis-Lateinischen Alphabet nicht vorkommen, wurden auf PCs traditionell mit verschiedenen 8- Bit - ASCII - Kodierungen ( Einzelbyte -Kodierungen) dargestellt . Diese entsprechen ASCII, wenn das höchstwertige Bit 0 ist (d. h. Bytes 0x00–7F in Hexadezimaldarstellung ), und enthalten zusätzliche Zeichen für ein höchstwertiges Bit von 1 (d. h. Bytes 0x80–FF). Einige davon, wie beispielsweise die ISO 8859- Serie, entsprechen ISO 2022, [ 9 ] [ 10 ] während andere, wie beispielsweise die DOS-Codepage 437, dies nicht tun, in der Regel weil sie die Bytes 0x80–9F nicht für Steuercodes reservieren.
Bestimmte ostasiatische Sprachen, insbesondere Chinesisch , Japanisch und Koreanisch (zusammen „ CJK “), verwenden deutlich mehr Zeichen als die maximal 256, die in einem einzelnen Byte dargestellt werden können. Sie wurden zunächst auf Computern mit sprachspezifischen Doppelbyte- oder variablen Bytebreitenkodierungen dargestellt . Einige dieser Kodierungen (wie die vereinfachte chinesische Kodierung GB 2312 ) entsprechen ISO 2022 , andere (wie die traditionelle chinesische Kodierung Big5 ) nicht. Steuerzeichen in ISO 2022 werden immer mit einem einzelnen Byte dargestellt, unabhängig von der Anzahl der Bytes für grafische Zeichen. CJK-Kodierungen, die in 7-Bit-Umgebungen mit ISO-2022- Mechanismen zum Umschalten zwischen Zeichensätzen verwendet werden, tragen oft Namen, die mit „ISO-2022-“ beginnen, insbesondere ISO-2022-JP . Auch einige andere CJK-Kodierungen wie EUC-JP nutzen ISO-2022-Mechanismen. [ 11 ] [ 12 ]
Da die ersten 256 Codepunkte von Unicode aus ISO 8859-1 stammen , übernimmt Unicode das Konzept der C0- und C1-Steuercodes von ISO 2022, fügt aber neben den ISO-2022-Steuercodes weitere nicht druckbare Zeichen hinzu. Unicode-Transformationsformate wie UTF-8 weichen jedoch in verschiedenen Punkten von der ISO-2022-Struktur ab, unter anderem:
- Verwendung von 8-Bit-Bytes, jedoch nicht Darstellung der C1-Codes in ihrer in ISO 2022 spezifizierten Einzelbyte-Form (die meisten UTFs, mit Ausnahme des veralteten UTF-1 ).
- Darstellung aller Zeichen, einschließlich Steuerzeichen, durch mehrere Bytes (z. B. UTF-16 , UTF-32 ).
- Mischen von Bytes, bei denen das höchstwertige Bit innerhalb der codierten Darstellung für einen einzelnen Codepunkt gesetzt und nicht gesetzt ist (z. B. UTF-1, GB 18030 ).
Es existieren jedoch ISO-2022-Escape-Sequenzen zum Umschalten zwischen UTF-8 als „einem von ISO 2022 abweichenden Codierungssystem “ [ 13 ] , die von bestimmten Terminalemulatoren wie xterm unterstützt werden . [ 14 ]
Überblick
Elemente
ISO/IEC 2022 legt Folgendes fest:
- Eine Infrastruktur aus mehreren Zeichensätzen mit bestimmten Strukturen, die in ein einziges Zeichenkodierungssystem integriert werden können , einschließlich mehrerer grafischer Zeichensätze und mehrerer Sätze von primären (C0) und sekundären (C1) Steuercodes , [ 15 ].
- Ein Format zur Kodierung dieser Mengen, unter der Annahme, dass 8 Bit pro Byte zur Verfügung stehen, [ 16 ]
- Ein Format zur Kodierung dieser Mengen im selben Kodierungssystem, wenn nur 7 Bit pro Byte zur Verfügung stehen, [ 17 ] und eine Methode zur Transformation beliebiger konformer Zeichendaten, um sie durch eine solche 7-Bit-Umgebung zu leiten, [ 8 ].
- Die allgemeine Struktur von ANSI-Escape-Codes , [ 6 ] und
- Spezifische Escape-Code-Formate zur Identifizierung einzelner Zeichensätze [ 7 ] , zur Ankündigung der Verwendung bestimmter Kodierungsmerkmale oder -teilmengen [ 18 ] und zur Interaktion mit oder zum Wechsel zu anderen Kodierungssystemen. [ 18 ]
Codeversionen
Eine konkrete Implementierung muss nicht den gesamten Standard umsetzen; der Konformitätsgrad und die unterstützten Zeichensätze werden durch die Implementierung definiert. Obwohl viele der im ISO/IEC-2022-Standard definierten Mechanismen selten verwendet werden, basieren mehrere etablierte Kodierungen auf einer Teilmenge des ISO/IEC-2022-Systems. [ 19 ] Zu den 7-Bit-Kodierungssystemen, die ISO/IEC-2022-Mechanismen verwenden, gehört insbesondere ISO-2022-JP (oder JIS-Kodierung ), das hauptsächlich für japanische E-Mails verwendet wird . Zu den 8-Bit-Kodierungssystemen, die ISO/IEC 2022 entsprechen, gehören ISO/IEC 4873 (ECMA-43), das wiederum von ISO/IEC 8859 [ 9 ] [ 10 ] und Extended Unix Code ( EUC ) konformiert wird, welches für ostasiatische Sprachen verwendet wird . [ 11 ] Zu den spezialisierteren Anwendungen von ISO 2022 gehört das MARC-8- Kodierungssystem, das in MARC 21- Bibliotheksdatensätzen verwendet wird. [ 3 ]
Kennzeichnungs-Escape-Sequenzen
Die Escape-Sequenzen zum Umschalten auf bestimmte Zeichensätze oder Kodierungen sind im ISO-IR- Register eingetragen (mit Ausnahme der für den privaten Gebrauch bestimmten Sequenzen, deren Bedeutung von Herstellern oder durch Protokollspezifikationen wie ARIB STD-B24 definiert wird ) und folgen den im Standard festgelegten Mustern. Zeichenkodierungen, die diese Escape-Sequenzen verwenden, erfordern eine sequentielle Datenverarbeitung in Vorwärtsrichtung, da die korrekte Interpretation der Daten von zuvor verwendeten Escape-Sequenzen abhängt.
Bestimmte Profile wie ISO-2022-JP können zusätzliche Bedingungen festlegen, beispielsweise dass der aktuelle Zeichensatz vor dem Zeilenende auf US-ASCII zurückgesetzt wird. Darüber hinaus können die Escape-Sequenzen zur Angabe der nationalen Zeichensätze fehlen, wenn eine spezifische ISO-2022-basierte Kodierung dies zulässt oder erfordert und die Verwendung bestimmter nationaler Zeichensätze vorschreibt. ISO-8859-1 beispielsweise legt fest, dass keine definierende Escape-Sequenz erforderlich ist.
Mehrbyte-Zeichen
Um große Zeichensätze darzustellen, baut ISO/IEC 2022 auf der Eigenschaft von ISO/IEC 646 auf , dass eine 7-Bit-Zeichendarstellung normalerweise 94 grafische (druckbare) Zeichen (zusätzlich zu Leerzeichen und 33 Steuerzeichen) darstellen kann. Werden lediglich die (eng definierten) C0-Steuercodes ausgeschlossen, lässt sich dies auf 96 Zeichen erweitern. Mit zwei Bytes können somit bis zu 8.836 (94×94) Zeichen und mit drei Bytes bis zu 830.584 (94×94×94) Zeichen dargestellt werden. Obwohl der Standard dies vorsieht, verwendet kein registrierter Zeichensatz drei Bytes (mit Ausnahme des nicht registrierten G2-Zeichensatzes von EUC-TW und des ebenfalls nicht registrierten CCCII ).
Bei Zwei-Byte-Zeichensätzen wird der Codepunkt jedes Zeichens üblicherweise in der sogenannten Zeilen-Zellen- oder Kuten- Form [ a ] angegeben. Diese besteht aus zwei Zahlen zwischen 1 und 94 (einschließlich), die die Zeile [ b ] und die Zelle [ c ] des jeweiligen Zeichens innerhalb der Zone festlegen. Bei Drei-Byte-Zeichensätzen wird zusätzlich eine Ebenennummer [ d ] am Anfang eingefügt. [ 20 ] Die Escape-Sequenzen deklarieren nicht nur den verwendeten Zeichensatz, sondern auch, ob es sich um einen Ein-Byte- oder Mehrbyte-Zeichensatz handelt (jedoch nicht, wie viele Bytes er im Falle eines Mehrbyte-Zeichensatzes verwendet) und ob jedes Byte 94 oder 96 zulässige Werte hat.
Codestruktur
Notation und Nomenklatur
Die ISO/IEC-2022-Codierung spezifiziert eine zweischichtige Zuordnung zwischen Zeichencodes und angezeigten Zeichen. Escape-Sequenzen ermöglichen die Zuordnung eines beliebigen Zeichensatzes aus einem großen Register grafischer Zeichensätze zu einem der vier Arbeitssätze G0 bis G3 [ 21 ] . Kürzere Steuersequenzen legen den Arbeitssatz fest, der zur Interpretation der Bytes im Datenstrom aufgerufen wird [ 22 ] .
Die Kodierung von Byte-Werten („Bitkombinationen“) erfolgt häufig in Spalten-Zeilen-Notation , wobei zwei Dezimalzahlen im Bereich 00–15 (die jeweils einer einzelnen Hexadezimalziffer entsprechen) [ 23 ] durch einen Schrägstrich getrennt werden. [ 24 ] So können beispielsweise die Codes 2/0 (0x20) bis einschließlich 2/15 (0x2F) als „Spalte 02“ bezeichnet werden. Diese Notation wird auch im ISO/IEC 2022 / ECMA-35-Standard verwendet. [ 25 ] An anderer Stelle können sie , wie in diesem Artikel häufig üblich, hexadezimal oder mit den entsprechenden ASCII-Zeichen beschrieben werden. [ 26 ] Die Escape-Sequenzen sind jedoch tatsächlich über Byte-Werte definiert, und die diesem Byte-Wert zugeordnete Grafik kann geändert werden, ohne die Steuersequenz zu beeinflussen.
Bytewerte aus dem 7-Bit-ASCII-Grafikbereich (hexadezimal 0x20–0x7F), die sich auf der linken Seite einer Zeichentabelle befinden, werden als „GL“-Codes (GL steht für „graphics left“) bezeichnet. Bytes aus dem „High-ASCII“-Bereich (0xA0–0xFF) werden, sofern verfügbar (d. h. in einer 8-Bit-Umgebung), als „GR“-Codes („graphics right“) bezeichnet . [ 5 ] Die Begriffe „CL“ (0x00–0x1F) und „CR“ (0x80–0x9F) bezeichnen die Steuerbereiche. Der CL-Bereich ruft stets die primären Steuerelemente (C0) auf, während der CR-Bereich entweder die sekundären Steuerelemente (C1) aufruft oder ungenutzt bleibt. [ 5 ]
Fest codierte Zeichen
Das Löschzeichen DEL (0x7F), das Escape-Zeichen ESC (0x1B) und das Leerzeichen SP (0x20) sind als „fest codierte“ Zeichen [ 27 ] gekennzeichnet und stehen immer zur Verfügung, wenn G0 über GL aufgerufen wird, unabhängig vom verwendeten Zeichensatz. Sie sind möglicherweise nicht in grafischen Zeichensätzen enthalten, obwohl andere Größen oder Arten von Leerzeichen enthalten sein können. [ 28 ]
Allgemeine Syntax von Escape-Sequenzen
Sequenzen, die das ESC-Zeichen (Escape-Zeichen) verwenden, haben die Form , wobei auf das ESC-Zeichen null oder mehr Zwischenbytes [ 29 ] ( I ) aus dem Bereich 0x20–0x2F und ein letztes Byte [ 30 ] ( F ) aus dem Bereich 0x30–0x7E folgen. [ 31 ]ESC [I...] F
Das erste Byte (I) bzw. dessen Fehlen bestimmt den Typ der Escape-Sequenz; es kann beispielsweise einen Arbeitsbereich oder eine einzelne Steuerfunktion kennzeichnen. Bei allen Arten von Escape-Sequenzen sind F Bytes im Bereich 0x30–0x3F für nicht registrierte, private Zwecke reserviert, die durch vorherige Vereinbarung zwischen den Parteien festgelegt wurden. [ 32 ]
Steuerfunktionen einiger Sätze können nach der eigentlichen Escape-Sequenz weitere Bytes verwenden. Beispielsweise folgt auf die ISO-6429 -Steuerfunktion „ Control Sequence Introducer “, die mithilfe einer Escape-Sequenz dargestellt werden kann, null oder mehr Bytes im Bereich 0x30–0x3F, dann null oder mehr Bytes im Bereich 0x20–0x2F und schließlich ein einzelnes Byte im Bereich 0x40–0x7E. Die gesamte Sequenz wird als „Steuersequenz“ bezeichnet. [ 33 ]
Grafische Zeichensätze
Jeder der vier Arbeitssätze G0 bis G3 kann ein 94-Zeichen-Satz oder ein 94 n -Zeichen- Mehrbyte-Satz sein . Zusätzlich kann G1 bis G3 ein 96- oder 96 n -Zeichen-Satz sein.
In einem 96- oder 96<sup> n </sup>-Zeichensatz werden die Bytes 0x20 bis 0x7F (bei Aufruf durch GL) bzw. 0xA0 bis 0xFF (bei Aufruf durch GR) reserviert und können vom Zeichensatz verwendet werden. In einem 94- oder 94<sup> n </sup>-Zeichensatz werden die Bytes 0x20 und 0x7F nicht verwendet. [ 34 ] Wird ein 96- oder 96<sup> n </sup>-Zeichensatz im GL-Bereich aufgerufen, stehen die Leerzeichen und Löschzeichen (Codes 0x20 und 0x7F) erst zur Verfügung, nachdem ein 94- oder 94<sup> n </sup>-Zeichensatz (z. B. der G0-Zeichensatz) im GL-Bereich aufgerufen wurde. [ 5 ] 96-Zeichensätze können nicht dem G0-Bereich zugewiesen werden.
Die Registrierung eines Zeichensatzes als 96-Zeichen-Satz bedeutet nicht zwangsläufig, dass die Bytes 0x20/A0 und 0x7F/FF tatsächlich vom Satz belegt sind. Beispiele für grafische Zeichensätze, die als 96-Zeichen-Sätze registriert sind, diese Bytes aber nicht verwenden, sind der G1-Satz von IS 434 [ 35 ] , der Box-Zeichensatz von ISO/IEC 10367 [ 36 ] und ISO-IR-164 (eine Teilmenge des G1-Satzes von ISO-8859-8 , die nur Buchstaben enthält und von CCITT verwendet wird ) [ 37 ] .
Kombination von Charakteren
Es wird erwartet, dass Zeichen als Trennzeichen und nicht als Kombinationszeichen verwendet werden, sofern im jeweiligen Grafiksatz nichts anderes festgelegt ist. [ 38 ] ISO 2022 / ECMA-35 erkennt auch die Verwendung der Steuerzeichen Rücktaste und Wagenrücklauf als Mittel zur Kombination von ansonsten trennenden Zeichen sowie die CSI-Sequenz „Graphic Character Combination“ (GCC) an [ 38 ] ( CSI 0x20 (SP) 0x5F (_)). [ 39 ]
Die Verwendung der Rücktaste und des Wagenrücklaufs auf diese Weise ist gemäß ISO/IEC 646 zulässig , jedoch gemäß ISO/IEC 4873 / ECMA-43 [ 40 ] und ISO/IEC 8859 [ 41 ] [ 42 ] untersagt , da dadurch das grafische Zeichenrepertoire nicht definiert wird. ISO/IEC 4873 / ECMA-43 erlaubt jedoch die Verwendung der GCC-Funktion, sofern die Zeichenfolge unverändert bleibt und lediglich in einem einzigen Leerzeichen angezeigt wird, anstatt durch Überschreiben ein Zeichen mit anderer Bedeutung zu erzeugen. [ 43 ]
Steuerzeichensätze
Steuerzeichensätze werden in „primäre“ und „sekundäre“ Steuerzeichensätze unterteilt, [ 44 ] die auch als „C0“- bzw. „C1“-Steuerzeichensätze bezeichnet werden. [ 45 ]
Ein C0-Steuersatz muss das ESC-Steuerzeichen (Escape-Zeichen) an Adresse 0x1B enthalten [ 46 ] (ein C0-Satz, der nur ESC enthält, ist als ISO-IR-104 registriert), [ 47 ] während ein C1-Steuersatz das Escape-Steuerzeichen überhaupt nicht enthalten darf. [ 34 ] Daher handelt es sich um völlig separate Registrierungen, wobei ein C0-Satz nur ein C0-Satz und ein C1-Satz nur ein C1-Satz ist. [ 45 ]
Wenn Codes aus dem C0-Zeichensatz von ISO 6429/ECMA-48, d. h. die ASCII-Steuercodes , im C0-Zeichensatz vorkommen, müssen sie an ihren entsprechenden Positionen gemäß ISO 6429/ECMA-48 erscheinen. [ 46 ] Die Aufnahme von Übertragungssteuerzeichen in den C0-Zeichensatz, zusätzlich zu den zehn in ISO 6429/ECMA-48 definierten Zeichen (nämlich SOH, STX, ETX, EOT, ENQ, ACK, DLE, NAK, SYN und ETB), [ 48 ] oder die Aufnahme eines dieser zehn Zeichen in den C1-Zeichensatz ist gemäß der Norm ISO/IEC 2022/ECMA-35 ebenfalls untersagt. [ 46 ] [ 34 ]
Ein C0-Steuersatz wird über den CL-Bereich 0x00 bis 0x1F aufgerufen [ 49 ] , während eine C1-Steuerfunktion über den CR-Bereich 0x80 bis 0x9F (in einer 8-Bit-Umgebung) oder mittels Escape-Sequenzen (in einer 7-Bit- oder 8-Bit-Umgebung) aufgerufen werden kann [ 44 ] , jedoch nicht beides gleichzeitig. Welche Art des C1-Aufrufs verwendet wird, muss in der Definition der Codeversion angegeben werden [ 50 ] . Beispielsweise spezifiziert ISO/IEC 4873 CR-Bytes für die verwendeten C1-Steuersätze (SS2 und SS3) [ 51 ] . Bei Bedarf kann die verwendete Aufrufart mithilfe von Ansagesequenzen kommuniziert werden .
Im letzteren Fall werden einzelne Steuerfunktionen aus dem Steuercodesatz C1 mithilfe von Escape-Sequenzen vom Typ Fe aufgerufen, [ 34 ] d. h. solchen, bei denen dem Steuerzeichen ESC ein Byte aus den Spalten 04 oder 05 folgt (d. h. bis ESC 0x40 (@)einschließlich ESC 0x5F (_)). [ 52 ]
Weitere Steuerungsfunktionen
Zusätzliche Steuerfunktionen werden Escape-Sequenzen vom Typ „Fs“ (im Bereich ESC 0x60 (`)von 1 bis 2 ESC 0x7E (~)) zugeordnet; diese haben eine fest zugewiesene Bedeutung und sind nicht von den Bezeichnungen C0 oder C1 abhängig. [ 52 ] [ 53 ] Die Registrierung von Steuerfunktionen für Sequenzen vom Typ „Fs“ muss von ISO/IEC JTC 1/SC 2 genehmigt werden . [ 53 ] Andere einzelne Steuerfunktionen können Escape-Sequenzen vom Typ „3Ft“ (im Bereich von 1 bis 2 ) zugeordnet werden, [ 54 ] obwohl derzeit (Stand 2019) keine „3Ft“-Sequenzen zugewiesen sind. [ 55 ] Einige davon sind in ECMA-35 (ISO 2022 / ANSI X3.41), andere in ECMA-48 (ISO 6429 / ANSI X3.64) spezifiziert. [ 56 ] ECMA-48 bezeichnet diese als „unabhängige Steuerfunktionen“. [ 57 ]ESC 0x23 (#) [I...] 0x40 (@)ESC 0x23 (#) [I...] 0x7E (~)
| Code | Verhexen | Abk. | Name | Effekt [ 55 ] |
|---|---|---|---|---|
ESC ` | 1B 60 | DMI | Manuelle Eingabe deaktivieren | Deaktiviert einige oder alle manuellen Eingabemöglichkeiten des Geräts. |
ESC a | 1B 61 | INT | Unterbrechen | Unterbricht den laufenden Prozess. |
ESC b | 1B 62 | EMI | Manuelle Eingabe aktivieren | Aktiviert die manuelle Eingabefunktion des Geräts. |
ESC c | 1B 63 | RIS | Auf Ausgangszustand zurücksetzen | Die Anzeige- und Eingabesysteme des Geräts kehren in den Zustand zurück, in dem es sich gerade befand, als es eingeschaltet wurde. [ 58 ] Verbindungen zu Clients sind davon nicht betroffen. |
ESC d | 1B 64 | CMD | Trennzeichen für Codierungsmethode | Wird verwendet bei der Interaktion mit einem externen Codierungs-/Repräsentationssystem, siehe unten. |
ESC n | 1B 6E | LS2 | Sperren Sie den zweiten Gang | Shift-Funktion, siehe unten. |
ESC o | 1B 6F | LS3 | Sperren Sie die dritte Shift-Position. | Shift-Funktion, siehe unten. |
ESC | | 1B 7C | LS3R | Schalten Sie die dritte Schiene rechts ein. | Shift-Funktion, siehe unten. |
ESC } | 1B 7D | LS2R | Zweiter Gang rechts einlegen | Shift-Funktion, siehe unten. |
ESC ~ | 1B 7E | LS1R | Schalthebel eins rechts arretieren | Shift-Funktion, siehe unten. |
Escape-Sequenzen vom Typ „Fp“ ( ESC 0x30 (0)bis ESC 0x3F (?)) oder vom Typ „3Fp“ ( bis ) sind nach vorheriger Vereinbarung zwischen den Parteien für individuelle, private Steuercodes reserviert. [ 59 ] Mehrere solcher Sequenzen beider Typen werden von DEC- Terminals wie dem VT100 verwendet und werden daher von Terminalemulatoren unterstützt . [ 14 ]ESC 0x23 (#) [I...] 0x30 (0)ESC 0x23 (#) [I...] 0x3F (?)
Shift-Funktionen
Standardmäßig geben GL-Codes G0-Zeichen und GR-Codes (sofern verfügbar) G1-Zeichen an; dies kann nach vorheriger Vereinbarung abweichen. Der für jeden Bereich aufgerufene Satz kann auch mit Steuercodes, sogenannten Verschiebungen, modifiziert werden, wie in der folgenden Tabelle dargestellt. [ 60 ]
Ein 8-Bit-Code kann GR-Codes enthalten, die G1-Zeichen spezifizieren, wobei der zugehörige 7-Bit-Code Shift In und Shift Out verwendet , um zwischen den Zeichensätzen umzuschalten (z. B. JIS X 0201 ) [ 61 ]. Einige Codes verwenden stattdessen GR-Codes, die G2-Zeichen spezifizieren, wobei der zugehörige 7-Bit-Code einen einfachen Shift-Code verwendet, um auf den zweiten Zeichensatz zuzugreifen (z. B. T.51 ) [ 62 ] .
Die in der folgenden Tabelle aufgeführten Codes sind die gebräuchlichsten Kodierungen dieser Steuercodes gemäß ISO/IEC 6429. Die Shift-Funktionen LS2, LS3, LS1R, LS2R und LS3R sind als einzelne Steuerfunktionen registriert und werden stets mit den unten aufgeführten Escape-Sequenzen kodiert [ 55 ] . Die übrigen Funktionen sind Teil eines C0- oder C1-Steuercodesatzes (wie unten dargestellt, sind SI (LS0) und SO (LS1) C0-Steuerfunktionen und SS2 und SS3 C1-Steuerfunktionen). Das bedeutet, dass ihre Kodierung und Verfügbarkeit je nach den verwendeten Steuercodesätzen variieren können: Sie müssen in den jeweiligen Steuercodesätzen vorhanden sein, wenn ihre Funktionalität genutzt wird. [ 49 ] [ 50 ] Die C1-Steuerfunktionen selbst können, wie bereits erwähnt, mit Escape-Sequenzen oder 8-Bit-Bytes dargestellt werden, jedoch nicht mit beidem.
Alternative Kodierungen der Einzelverschiebungen als C0-Steuercodes sind in bestimmten Steuercodesätzen verfügbar. Beispielsweise sind SS2 und SS3 in T.51 [ 62 ] und T.61 [ 63 ] üblicherweise unter 0x19 bzw. 0x1D verfügbar . Diese Kodierung wird derzeit von ISO/IEC 2022/ECMA-35 für Anwendungen empfohlen, die 7-Bit-Einzelbyte-Darstellungen von SS2 und SS3 benötigen [ 64 ] , und kann auch nur für SS2 verwendet werden [ 65 ]. Es existieren jedoch auch ältere Codesätze mit SS2 unter 0x1C [ 66 ] [ 67 ] [ 68 ] , die in einer früheren Ausgabe des Standards als solche erwähnt wurden [ 69 ] . Die unten dargestellte Kodierung der Einzelverschiebungen unter 0x8E und 0x8F ist für ISO/IEC 4873 Level 2 und 3 obligatorisch [ 70 ].
| Code | Verhexen | Abk. | Name | Wirkung |
|---|---|---|---|---|
SI | 0F | SI LS0 | Schalten Sie in die Sperrstellung Null. | GL kodiert ab jetzt G0 [ 71 ] [ 72 ] |
SO | 0E | SO LS1 | Schaltsperre für Gang eins | GL kodiert ab jetzt G1 [ 71 ] [ 72 ] |
ESC n | 1B 6E | LS2 | Sperren Sie den zweiten Gang | GL kodiert ab jetzt G2 [ 71 ] [ 72 ] |
ESC o | 1B 6F | LS3 | Sperren Sie die dritte Shift-Position. | GL kodiert ab jetzt G3 [ 71 ] [ 72 ] |
CR-Bereich: SS2Escape-Code:ESC N | CR-Bereich: 8EEscape-Code:1B 4E | SS2 | Einzelschicht zwei | GL oder GR (siehe unten) kodiert G2 nur für das unmittelbar folgende Zeichen [ 73 ] |
CR-Bereich: SS3Escape-Code:ESC O | CR-Bereich: 8FEscape-Code:1B 4F | SS3 | Einzelschicht drei | GL oder GR (siehe unten) kodiert G3 nur für das unmittelbar folgende Zeichen [ 73 ] |
ESC ~ | 1B 7E | LS1R | Schalthebel eins rechts arretieren | GR kodiert ab jetzt G1 [ 74 ] |
ESC } | 1B 7D | LS2R | Zweiter Gang rechts einlegen | GR kodiert ab jetzt G2 [ 74 ] |
ESC | | 1B 7C | LS3R | Schalten Sie die dritte Schiene rechts ein. | GR kodiert ab jetzt G3 [ 74 ] |
Obwohl sie offiziell als Shift-Codes gelten und entsprechend benannt sind, werden Single-Shift-Codes nicht immer als Shifts betrachtet [ 12 ] , sondern können einfach als Präfixbytes (d. h. die ersten Bytes einer Mehrbytesequenz) angesehen werden [ 11 ] , da sie im Gegensatz zu Locking-Shift-Codes nicht erfordern, dass der Encoder den aktuell aktiven Satz als Zustand speichert . In 8-Bit-Umgebungen kann entweder GL oder GR, aber nicht beide, als Single-Shift-Bereich verwendet werden. Dies muss in der Definition der Codeversion angegeben werden [ 73 ] . Beispielsweise spezifiziert ISO/IEC 4873 GL, während Packed EUC GR spezifiziert. In 7-Bit-Umgebungen wird ausschließlich GL als Single-Shift-Bereich verwendet [ 75 ] [ 76 ] . Bei Bedarf kann der verwendete Single-Shift-Bereich mithilfe von Ansagesequenzen kommuniziert werden .
Die Bezeichnungen „Locking Shift Zero“ (LS0) und „Locking Shift One“ (LS1) beziehen sich auf dasselbe Paar von C0-Steuerzeichen (0x0F und 0x0E) wie die Bezeichnungen „Shift In“ (SI) und „Shift Out“ (SO). Im Standard werden sie jedoch als LS0 und LS1 bezeichnet, wenn sie in 8-Bit-Umgebungen verwendet werden, und als SI und SO, wenn sie in 7-Bit-Umgebungen verwendet werden. [ 60 ]
Der Standard ISO/IEC 2022 / ECMA-35 erlaubt zwar die gleichzeitige Verwendung von G1, G2 oder G3 in GL und GR, rät aber davon ab. [ 77 ]
Registrierung von grafischen und Steuercodesätzen
Das internationale ISO-Register für codierte Zeichensätze zur Verwendung mit Escape-Sequenzen (ISO-IR) listet grafische Zeichensätze, Steuerzeichensätze, einzelne Steuerzeichen usw. auf, die für die Verwendung mit ISO/IEC 2022 registriert wurden. Das Verfahren zur Registrierung von Codes und Sätzen im ISO-IR-Register ist in ISO/IEC 2375 spezifiziert . Jede Registrierung erhält eine eindeutige Escape-Sequenz und eine eindeutige Registereintragsnummer zur Identifizierung. [ 78 ] [ 79 ] Beispielsweise ist der CCITT- Zeichensatz für vereinfachtes Chinesisch als ISO-IR-165 bekannt .
Die Registrierung codierter Zeichensätze im ISO-IR-Register kennzeichnet die Dokumente, die den Zeichensatz oder die Steuerfunktion einer ISO/IEC 2022-Escape-Sequenz für den nicht-privaten Gebrauch spezifizieren. Es kann sich dabei um ein Standarddokument handeln; die Registrierung führt jedoch nicht zur Schaffung eines neuen ISO-Standards, verpflichtet weder ISO noch IEC zur Übernahme als internationalen Standard und verpflichtet auch nicht ISO oder IEC zur Aufnahme ihrer Zeichen in den Universal Coded Character Set (UCS) . [ 80 ]
ISO-IR-registrierte Escape-Sequenzen werden auch in einem formalen öffentlichen Bezeichner (FPI) gekapselt, um Zeichensätze für numerische Zeichenreferenzen in SGML (ISO 8879) zu identifizieren. Beispielsweise ISO 646-1983//CHARSET International Reference Version (IRV)//ESC 2/5 4/0kann die Zeichenkette zur Identifizierung der Internationalen Referenzversion von ISO 646-1983 verwendet werden [ 81 ] , und die HTML- 4.01-Spezifikation verwendet sie zur Identifizierung von Unicode [ 82 ]ISO Registration Number 177//CHARSET ISO/IEC 10646-1:1993 UCS-4 with implementation level 3//ESC 2/5 2/15 4/6 . Die textuelle Darstellung der Escape-Sequenz, die im dritten Element des FPI enthalten ist, wird von SGML-Implementierungen für unterstützte Zeichensätze erkannt [ 81 ] .
Zeichensatzbezeichnungen
Escape-Sequenzen zur Kennzeichnung von Zeichensätzen haben die Form <Zeichensatz> . Wie bereits erwähnt, liegen die Zwischenbytes ( I ) im Bereich von 0x20 bis 0x2F und das letzte Byte ( F ) im Bereich von 0x30 bis 0x7E. Das erste I- Byte (bzw. bei einem Mehrbyte-Zeichensatz die ersten beiden) identifiziert den Typ des Zeichensatzes und den zugehörigen Arbeitssatz, während das F- Byte (und alle weiteren I- Bytes) den Zeichensatz selbst identifiziert, wie er im ISO-IR-Register (oder bei Escape-Sequenzen für den privaten Gebrauch gemäß vorheriger Vereinbarung) festgelegt ist. ESC I [I...] F
Um den Bereich des F- Bytes zu erweitern, können zusätzliche I- Bytes vor dem F -Byte eingefügt werden . Dies wird derzeit nur bei 94-Zeichensätzen verwendet, denen Codes der Form [ 83 ] zugewiesen wurden. Im anderen Extremfall sind keine Multibyte-96-Zeichensätze registriert, daher sind die folgenden Sequenzen rein theoretischer Natur. ESC ( ! F
Wie bei anderen Escape-Sequenzen ist der Bereich 0x30–0x3F für private F- Bytes reserviert [ 32 ] , in diesem Fall für private Zeichensatzdefinitionen (einschließlich nicht registrierter Sätze, die durch Protokolle wie ARIB STD-B24 [ 84 ] oder MARC-8 [ 3 ] oder herstellerspezifische Sätze wie DEC Special Graphics definiert sind ) [ 85 ] . Ist in einer grafischen Zeichensatzbezeichnungssequenz das zweite I- Byte (bei einem Ein-Byte-Satz) oder das dritte I- Byte (bei einem Doppel-Byte-Satz) jedoch 0x20 (Leerzeichen), handelt es sich bei dem bezeichneten Satz um einen „ dynamisch neu definierbaren Zeichensatz “ (DRCS), der durch vorherige Vereinbarung definiert wurde [ 86 ] und ebenfalls als privat gilt [ 32 ] . Ein grafischer Zeichensatz, der als DRCS gilt, repräsentiert eine Schriftart mit exakten Glyphen und nicht einen Satz abstrakter Zeichen. [ 87 ] Die Art und Weise, wie DRCS-Sätze und zugehörige Schriftarten übertragen, zugewiesen und verwaltet werden, ist in ISO/IEC 2022 / ECMA-35 selbst nicht festgelegt, obwohl empfohlen wird, sie sequenziell ab Byte 0x40 ( ) zuzuweisen ; [ @88 ] jedoch ist in einigen Telekommunikationsprotokollen wie World System Teletext eine Methode zur Übertragung von DRCS-Schriftarten definiert . [ 89 ]
Es gibt außerdem drei Sonderfälle für Mehrbyte-Codes. Die Codesequenzen ESC $ @, ESC $ A, und ESC $ Bwurden alle registriert, als die damalige Version des Standards Mehrbyte-Sätze nur in G0 zuließ, daher müssen sie anstelle der Sequenzen ESC $ ( @bis akzeptiert werden ESC $ ( B, um den G0-Zeichensatz zu kennzeichnen. [ 90 ]
Es gibt zusätzliche (selten genutzte) Funktionen zum Umschalten von Steuerzeichensätzen. Dabei handelt es sich jedoch um eine einstufige Suche, da (wie bereits erwähnt) der C0-Satz immer über CL und der C1-Satz immer über CR oder mithilfe von Escape-Sequenzen aufgerufen wird. Wie bereits erwähnt, muss jeder C0-Zeichensatz das ESC-Zeichen an Position 0x1B enthalten, um weitere Änderungen zu ermöglichen. Die Bezeichnungssequenzen für Steuerzeichensätze (im Gegensatz zu den grafischen Sequenzen) können auch innerhalb von ISO/IEC 10646 (UCS/Unicode) verwendet werden, sofern die Verarbeitung von ANSI-Escape-Sequenzen sinnvoll ist und jedes Byte der Sequenz auf die Codeeinheitsgröße der Kodierung aufgefüllt wird. [ 91 ]
Nachfolgend ist eine Tabelle der Escape-Sequenz- I- Bytes und ihrer jeweiligen Bezeichnung oder Funktion aufgeführt. [ 92 ]
| Code | Verhexen | Abk. | Name | Wirkung | Beispiel |
|---|---|---|---|---|---|
ESC SP F | 1B 20 F | ACS | Ankündigung der Code-Struktur | Gibt die verwendeten Code-Features an, z. B. Arbeitssätze (siehe unten ). [ 93 ] | ESC SP L ( ISO 4873 Stufe 1) |
ESC ! F | 1B 21 F | CZD | CO-Bezeichnung | F wählt einen zu verwendenden C0-Steuerzeichensatz aus. [ 94 ] | ESC ! @ ( ASCII C0-Codes ) |
ESC " F | 1B 22 F | C1D | C1-Bezeichnung | F wählt einen zu verwendenden C1-Steuerzeichensatz aus. [ 95 ] | ESC " C ( ISO 6429 C1-Codes ) |
ESC # F | 1B 23 F | - | (Einzelsteuerungsfunktion) | (Reserviert für Sequenzen für Steuerfunktionen, siehe oben .) | ESC # 6 (Privater Gebrauch: DEC Doppelbreitenleitung ) [ 96 ] |
|
| GZDM4 | G0-Bezeichnung Multibyte 94-Satz | F wählt einen 94 n -Zeichensatz aus, der für G0 verwendet werden soll. [ 90 ] | ESC $ ( C ( KS X 1001 in G0) |
ESC $ ) F | 1B 24 29 F | G1DM4 | G1-Bezeichnung Multibyte 94-Satz | F wählt einen 94 n -Zeichensatz aus, der für G1 verwendet werden soll. [ 90 ] | ESC $ ) A ( GB 2312 in G1) |
ESC $ * F | 1B 24 2A F | G2DM4 | G2-Bezeichnung Multibyte 94-Satz | F wählt einen 94 n -Zeichensatz aus, der für G2 verwendet werden soll. [ 90 ] | ESC $ * B ( JIS X 0208 in G2) |
ESC $ + F | 1B 24 2B F | G3DM4 | G3-Bezeichnung Multibyte 94-Satz | F wählt einen 94 n -Zeichensatz aus, der für G3 verwendet werden soll. [ 90 ] | ESC $ + D ( JIS X 0212 in G3) |
ESC $ , F | 1B 24 2C F | - | (nicht verwendet) | (nicht verwendet) [ f ] | - |
ESC $ - F | 1B 24 2D F | G1DM6 | G1 bezeichnet Multibyte-96-Satz | F wählt einen 96 n -Zeichensatz aus, der für G1 verwendet werden soll. [ 90 ] | ESC $ - 1 (private Nutzung) |
ESC $ . F | 1B 24 2E F | G2DM6 | G2-Bezeichnung Multibyte 96-Satz | F wählt einen 96 n -Zeichensatz aus, der für G2 verwendet werden soll. [ 90 ] | ESC $ . 2 (private Nutzung) |
ESC $ / F | 1B 24 2F F | G3DM6 | G3-Bezeichnung Multibyte 96-Satz | F wählt einen 96 n -Zeichensatz aus, der für G3 verwendet werden soll. [ 90 ] | ESC $ / 3 (private Nutzung) |
ESC % F | 1B 25 F | DOKUMENTE | Anderes Codierungssystem festlegen | Schaltercodierungssystem, siehe unten . | ESC % G ( UTF-8 ) |
ESC & F | 1B 26 F | IRR | Überarbeitete Registrierung identifizieren | Präfixe werden als Bezeichnung verwendet, um eine Revision anzuzeigen. [ g ] | ESC & @ ESC $ B ( JIS X 0208:1990 in G0) |
ESC ' F | 1B 27 F | - | (nicht verwendet) | (nicht verwendet) | - |
ESC ( F | 1B 28 F | GZD4 | G0-Bezeichnung 94-Satz | F wählt einen 94-Zeichen-Satz aus, der für G0 verwendet werden soll. [ 90 ] | ESC ( B ( ASCII in G0) |
ESC ) F | 1B 29 F | G1D4 | G1-Bezeichnung 94-Satz | F wählt einen 94-Zeichen-Satz aus, der für G1 verwendet werden soll. [ 90 ] | ESC ) I ( JIS X 0201 Kana in G1) |
ESC * F | 1B 2A F | G2D4 | G2-Bezeichnung 94-Satz | F wählt einen 94-Zeichen-Satz aus, der für G2 verwendet werden soll. [ 90 ] | ESC * v ( ITU T.61 RHS in G2) |
ESC + F | 1B 2B F | G3D4 | G3-Bezeichnung 94-Satz | F wählt einen 94-Zeichen-Satz aus, der für G3 verwendet werden soll. [ 90 ] | ESC + D ( NATS-SEFI-ADD in G3) |
ESC , F | 1B 2C F | - | (nicht verwendet) | (nicht verwendet) [ h ] | - |
ESC - F | 1B 2D F | G1D6 | G1-Bezeichnung 96-Satz | F wählt einen 96-Zeichen-Satz aus, der für G1 verwendet werden soll. [ 90 ] | ESC - A ( ISO 8859-1 RHS in G1) |
ESC . F | 1B 2E F | G2D6 | G2-Bezeichnung 96-Satz | F wählt einen 96-Zeichen-Satz aus, der für G2 verwendet werden soll. [ 90 ] | ESC . B ( ISO 8859-2 RHS in G2) |
ESC / F | 1B 2F F | G3D6 | G3-Bezeichnung 96-Satz | F wählt einen 96-Zeichen-Satz aus, der für G3 verwendet werden soll. [ 90 ] | ESC / b ( ISO 8859-15 RHS in G3) |
Beachten Sie, dass die Registrierung der F-ESC ( A Bytes für die verschiedenen Typen unabhängig ist. Der mit 94 bis 96 bezeichnete Grafikzeichensatz steht in keinerlei Beziehung zum mit 96 bis 96 ESC + Abezeichneten Zeichensatz . Und keiner dieser beiden steht in Beziehung zum mit 94 bis n bezeichneten Zeichensatz usw.; die letzten Bytes müssen im Kontext interpretiert werden. (Tatsächlich ist die Angabe des C1-Steuercodes 0x81 ohne Zwischenbytes möglich.)ESC - AESC / AESC $ ( AESC $ + AESC A
Beachten Sie außerdem, dass die Steuerzeichensätze C0 und C1 unabhängig sind; der durch bezeichnete Steuerzeichensatz C0 ESC ! A(der zufällig der NATS-Steuerzeichensatz für die Übertragung von Zeitungstexten ist) ist nicht derselbe wie der durch bezeichnete Steuerzeichensatz C1 ESC " A(der CCITT -Attributsteuerzeichensatz für Videotex ).
Interaktion mit anderen Codierungssystemen
Der Standard definiert auch eine Möglichkeit, Codierungssysteme zu spezifizieren, die nicht seiner eigenen Struktur folgen.
Für die Rückkehr zu ISO/IEC 2022 ist eine Sequenz definiert; die Registrierungen, die diese Sequenz gemäß ISO/IEC 2022 unterstützen, umfassen (Stand 2019) verschiedene Videotex- Formate, UTF-8 und UTF-1 . [ 100 ] Ein zweites Byte vom Typ 0x2F /ist in den Bezeichnungssequenzen von Codes enthalten, die diese Byte-Sequenz nicht für die Rückkehr zu ISO 2022 verwenden; diese können eigene Mechanismen für die Rückkehr zu ISO 2022 (z. B. eine andere oder aufgefüllte Sequenz) oder gar keine verwenden. [ 101 ] Alle bestehenden Registrierungen des letztgenannten Typs (Stand 2019) sind entweder transparente Rohdaten, Unicode/UCS-Formate oder Teilmengen davon. [ 102 ]
| Code | Verhexen | Abk. | Name | Wirkung |
|---|---|---|---|---|
ESC % @ | 1B 25 40 | DOKUMENTE | Anderes Codierungssystem angeben ("Standardrückgabe") | Rückkehr zu ISO/IEC 2022 aus einer anderen Kodierung. [ 101 ] |
ESC % F | 1B 25 F | Anderes Codierungssystem angeben ("mit Standardrückgabe") [ 100 ] | F wählt einen 8-Bit-Code aus; verwenden Sie ihn ESC % @zur Rückgabe. [ 101 ] | |
ESC % / F | 1B 25 2F F | Anderes Codierungssystem angeben ("ohne Standardrückgabe") [ 102 ] | F wählt einen 8-Bit-Code aus; es gibt keine Standardmethode zur Rückgabe. [ 101 ] | |
ESC d | 1B 64 | CMD | Trennzeichen für Codierungsmethode | Kennzeichnet das Ende einer nach ISO/IEC 2022 codierten Sequenz. [ 103 ] |
Von besonderem Interesse sind die Sequenzen, die auf ISO/IEC 10646 ( Unicode )-Formate umstellen, welche nicht der ISO/IEC 2022-Struktur entsprechen. Dazu gehören UTF-8 (das den Bereich 0x80–0x9F nicht für Steuerzeichen reserviert), sein Vorgänger UTF-1 (das GR- und GL-Bytes in Mehrbytecodes mischt) sowie UTF-16 und UTF-32 (die breitere Codierungseinheiten verwenden). [ 100 ] [ 102 ]
Für Teilmengen (Level 1 und 2) von UTF-8, UTF-16 und UTF-32 sowie für drei Level von UCS-2 wurden mehrere Codes registriert . [ 102 ] Allerdings sind in ISO/IEC 10646 derzeit nur die Level-3-Codes für UTF-8, UTF-16 und UTF-32 sowie der nicht spezifizierte Level-Code für UTF-8 spezifiziert; alle anderen gelten als veraltet. [ 104 ] ISO/IEC 10646 legt fest, dass die Big-Endian- Formate von UTF-16 und UTF-32 durch ihre Escape-Sequenzen gekennzeichnet werden. [ 105 ]
| Unicode-Format | Code(s) | Hex [ 104 ] | Veraltete Codes | Veraltete Hexadezimaldarstellung [ 100 ] [ 102 ] [ 104 ] |
|---|---|---|---|---|
| UTF-1 | (UTF-1 ist nicht in der aktuellen ISO/IEC 10646 enthalten.) | ESC % B | 1B 25 42 | |
| UTF-8 | ESC % G,ESC % / I | 1B 25 47, [ 13 ] 1B 25 2F 49[ 106 ] | ESC % / G,ESC % / H | 1B 25 2F 47,1B 25 2F 48 |
| UTF-16 | ESC % / L | 1B 25 2F 4C[ 107 ] | ESC % / @, ESC % / C, ESC % / E, ESC % / J,ESC % / K | 1B 25 2F 40, 1B 25 2F 43, 1B 25 2F 45, 1B 25 2F 4A,1B 25 2F 4B |
| UTF-32 | ESC % / F | 1B 25 2F 46 | ESC % / A,ESC % / D | 1B 25 2F 41,1B 25 2F 44 |
Von den Sequenzen, die auf UTF-8 umstellen, ESC % Gist dies diejenige, die beispielsweise von xterm unterstützt wird . [ 14 ]
Obwohl die Verwendung einer Variante der Standardrückgabesequenz von UTF-16 und UTF-32 zulässig ist, müssen die Bytes der Escape-Sequenz auf die Größe der Codeeinheit der Kodierung (d. h. 001B 0025 0040für UTF-16) aufgefüllt werden, d. h. die Kodierung der Standardrückgabesequenz entspricht nicht exakt ISO/IEC 2022. Aus diesem Grund verwenden die Bezeichnungen für UTF-16 und UTF-32 eine Syntax ohne Standardrückgabe. [ 108 ]
Zur Spezifizierung von Kodierungen durch Labels definiert das Compound Text- Format des X-Konsortiums fünf DOCS-Sequenzen für den privaten Gebrauch. [ 109 ]
Ankündigungen zur Codestruktur
Die Sequenz „announce code structure“ ( ) dient zur Ankündigung einer spezifischen Codestruktur oder einer bestimmten Gruppe von ISO-2022-Einrichtungen, die in einer bestimmten Codeversion verwendet werden. Obwohl Ankündigungen kombiniert werden können, sind bestimmte widersprüchliche Kombinationen (insbesondere die Verwendung der Locking-Shift-Ankündigungen 16–23 mit den Ankündigungen 1, 3 und 4) gemäß der Norm verboten. Ebenso ist die Verwendung zusätzlicher Ankündigungen über die ISO/IEC-4873 -Ankündigungen 12–14 [ 93 ] hinaus untersagt (welche die zulässigen Strukturmerkmale vollständig spezifizieren). Die Ankündigungssequenzen lauten wie folgt: ESC SP (0x20) F
| Nummer | Code | Verhexen | Codeversionsfunktion angekündigt [ 93 ] |
|---|---|---|---|
| 1 | ESC SP A | 1B 20 41 | G0 in GL, GR nicht vorhanden oder nicht verwendet, keine Sperrschaltungen. |
| 2 | ESC SP B | 1B 20 42 | G0 und G1 werden durch Sperren von Shifts zu GL aufgerufen, GR fehlt oder wird nicht verwendet. |
| 3 | ESC SP C | 1B 20 43 | G0 in GL, G1 in GR, keine Sperrverschiebungen, erfordert eine 8-Bit-Umgebung. |
| 4 | ESC SP D | 1B 20 44 | G0 in GL, G1 in GR bei 8-Bit, keine Sperrverschiebungen außer in einer 7-Bit-Umgebung. |
| 5 | ESC SP E | 1B 20 45 | Die Schiebefunktionen bleiben bei der 7-Bit/8-Bit-Konvertierung erhalten. |
| 6 | ESC SP F | 1B 20 46 | C1 steuert über Escape-Sequenzen. |
| 7 | ESC SP G | 1B 20 47 | C1 steuert in 8-Bit-Umgebungen den CR-Bereich, ansonsten dienen Escape-Sequenzen als Steuerung. |
| 8 | ESC SP H | 1B 20 48 | Nur grafische Zeichensätze mit 94 Zeichen. |
| 9 | ESC SP I | 1B 20 49 | grafische Zeichensätze mit 94 bzw. 96 Zeichen. |
| 10 | ESC SP J | 1B 20 4A | Verwendet einen 7-Bit-Code, auch wenn ein achtes Bit zur Verfügung steht. |
| 11 | ESC SP K | 1B 20 4B | Erfordert einen 8-Bit-Code. |
| 12 | ESC SP L | 1B 20 4C | Entspricht ISO/IEC 4873 (ECMA-43) Level 1. |
| 13 | ESC SP M | 1B 20 4D | Entspricht ISO/IEC 4873 (ECMA-43) Level 2. |
| 14 | ESC SP N | 1B 20 4E | Entspricht ISO/IEC 4873 (ECMA-43) Level 3. |
| 16 | ESC SP P | 1B 20 50 | SI / LS0 verwendet. |
| 18 | ESC SP R | 1B 20 52 | SO / LS1 verwendet. |
| 19 | ESC SP S | 1B 20 53 | LS1R wird in 8-Bit-Umgebungen verwendet, SO in 7-Bit-Umgebungen. |
| 20 | ESC SP T | 1B 20 54 | LS2 verwendet. |
| 21 | ESC SP U | 1B 20 55 | LS2R wird in 8-Bit-Umgebungen verwendet, LS2 in 7-Bit-Umgebungen. |
| 22 | ESC SP V | 1B 20 56 | LS3 verwendet. |
| 23 | ESC SP W | 1B 20 57 | LS3R wird in 8-Bit-Umgebungen verwendet, LS3 in 7-Bit-Umgebungen. |
| 26 | ESC SP Z | 1B 20 5A | SS2 wurde verwendet. |
| 27 | ESC SP [ | 1B 20 5B | SS3 wurde verwendet. |
| 28 | ESC SP \ | 1B 20 5C | Einzelverschiebungen werden über GR aufgerufen. |
ISO/IEC 2022-Codeversionen

Sechs 7-Bit-ISO-2022-Codeversionen (ISO-2022-CN, ISO-2022-CN-EXT, ISO-2022-JP, ISO-2022-JP-1, ISO-2022-JP-2 und ISO-2022-KR) sind in den IETF RFCs definiert , von denen ISO-2022-JP und ISO-2022-KR in der Vergangenheit weit verbreitet waren. [ 110 ] Zahlreiche weitere Varianten werden von verschiedenen Herstellern, darunter IBM , definiert . [ 111 ] Obwohl UTF-8 die bevorzugte Kodierung in HTML5 ist , ist der ältere Inhalt in ISO-2022-JP noch so weit verbreitet, dass der WHATWG -Kodierungsstandard ihn weiterhin unterstützt. [ 112 ] Im Gegensatz dazu werden ISO-2022-KR, ISO-2022-CN und ISO-2022-CN-EXT [ 113 ] aufgrund von Bedenken hinsichtlich Code-Injection- Angriffen wie Cross-Site-Scripting vollständig auf das Ersatzzeichen abgebildet . [ 114 ] [ 112 ] [ 114 ]
Zu den 8-Bit-Codeversionen gehört der erweiterte Unix-Code . [ 11 ] [ 12 ] Die ISO/IEC-8859 -Kodierungen folgen ebenfalls ISO 2022, und zwar in einer in ISO/IEC 4873 festgelegten Teilmenge. [ 9 ] [ 10 ]
Japanische E-Mail-Versionen
ISO-2022-JP
ISO-2022-JP ist eine weit verbreitete Kodierung für Japanisch, insbesondere inE-Mails. Sie wurde für die Verwendung im JUNET-Netzwerk eingeführt und später inIETF RFC1468 von 1993 kodifiziert. [ 115 ] Sie hat gegenüber anderenKodierungen für Japanisch, dass sie keine8-Bit-Übertragung ohne Datenverlust erfordert. Microsoft bezeichnet sie alsCodepage 50220.[ 116 ] Sie beginnt mit ASCII und enthält die folgenden Escape-Sequenzen:
ESC ( Bauf ASCII umschalten (1 Byte pro Zeichen)ESC ( JUmstellung auf JIS X 0201-1976 (ISO/IEC 646:JP) Roman-Zeichensatz (1 Byte pro Zeichen)ESC $ @auf JIS X 0208-1978 (2 Bytes pro Zeichen) umstellenESC $ Bauf JIS X 0208-1983 (2 Bytes pro Zeichen) umstellen
Die Verwendung der beiden in JIS X 0208-1990 hinzugefügten Zeichen ist zulässig, jedoch ohne Einbeziehung der IRR-Sequenz, d. h. unter Verwendung derselben Escape-Sequenz wie in JIS X 0208-1983. [ 115 ] Da die Registrierung vor der Möglichkeit erfolgte, Mehrbyte-Sets mit Ausnahme von G0 zu kennzeichnen, enthalten die Escape-Sequenzen für JIS X 0208 das zweite I -Byte nicht (. [ 90 ]
Der RFC merkt an, dass einige bestehende Systeme nicht ESC ( Bzwischen ESC ( J`\` und `\` unterschieden, legt aber fest, dass die Escape-Sequenzen von Systemen, die lediglich Nachrichten wie E-Mails weiterleiten, nicht geändert werden sollten. ESC $ @[ 115 ] Der von HTML5 referenzierte WHATWG -Codierungsstandard behandelt `\` und `\` unterschiedlich, behandelt `\` beim Decodieren jedoch gleich wie `\` und verwendet `\` beim Codieren ausschließlich für JIS X 0208. [ 117 ] Der RFC merkt außerdem an, dass einige ältere Systeme die Sequenz fälschlicherweise verwendet haben, um von JIS X 0208 wegzuschalten, welches tatsächlich für ISO-IR-11 (eine schwedische Variante von ISO 646 und World System Teletext ) registriert ist. [ 115 ] [ i ]ESC $ BESC ( BESC ( JESC $ @ESC $ BESC $ BESC ( H
Versionen mit halbbreitem Katakana
Die Verwendung von ESC ( I`to` zum Umschalten auf den Kana-Zeichensatz JIS X 0201-1976 (1 Byte pro Zeichen) ist nicht Teil des ISO-2022-JP-Profils [ 115 ] , wird aber dennoch gelegentlich verwendet. Python erlaubt dies in einer Variante namens ISO-2022-JP-EXT (die, wie unten beschrieben, auch JIS X 0212 enthält und somit EUC-JP vollständig abdeckt ) [ 118 ] [ 119 ]. Diese ähnelt sowohl im Namen als auch in der Struktur einer von DEC als ISO-2022-JPext bezeichneten Kodierung, die zusätzlich einen benutzerdefinierten Zwei-Byte-Bereich hinzufügt, auf den mit `to` zugegriffen wird , um die Abdeckung von Super DEC Kanji zu vervollständigen [ 120 ] . Die WHATWG/HTML5-Variante erlaubt das Dekodieren von JIS X 0201 Katakana in ISO-2022-JP-Eingaben, konvertiert die Zeichen jedoch beim Kodieren in ihre JIS X 0208-Äquivalente. [ 117 ] Die Microsoft-Codepage für ISO-2022-JP mit zusätzlich zulässigen JIS X 0201 Kana ist die Codepage 50221. [ 116 ]ESC $ ( 0
Andere, ältere Varianten, bekannt als JIS7 und JIS8, basieren direkt auf den 7-Bit- und 8-Bit-Kodierungen von JIS X 0201 und ermöglichen die Verwendung von JIS X 0201-Kana ab G1 ohne Escape-Sequenzen, indem sie Shift Out und Shift In bzw. das achte Bit (GR-aufgerufen) verwenden. [ 121 ] Sie sind nicht weit verbreitet; [ 121 ] Die Unterstützung von JIS X 0208 in erweitertem 8-Bit-JIS X 0201 wird üblicherweise über Shift JIS erreicht . Die Codepage von Microsoft für JIS X 0201-basiertes ISO 2022 mit Einzelbyte-Katakana über Shift Out und Shift In ist die Codepage 50222. [ 116 ]
ISO-2022-JP-2
ISO-2022-JP-2 ist eine mehrsprachige Erweiterung von ISO-2022-JP, definiert in RFC 1554 (von 1993), die zusätzlich zu den ISO-2022-JP-Sequenzen die folgenden Escape-Sequenzen zulässt. DieISO/IEC-8859-Teile sind 96-Zeichen-Sätze, die nicht G0 zugewiesen werden können und über G2 mit der 7-Bit-Escape-Sequenzform des Single-Shift-Codes SS2 aufgerufen werden: [ 122 ]
ESC $ AUmstellung auf GB 2312-1980 (2 Bytes pro Zeichen)ESC $ ( CUmstellung auf KS X 1001-1992 (2 Bytes pro Zeichen)ESC $ ( DUmstellung auf JIS X 0212-1990 (2 Bytes pro Zeichen)ESC . AUmstellung auf ISO/IEC 8859-1 High Part, Extended Latin 1 Set (1 Byte pro Zeichen) [bezeichnet als G2]ESC . FUmstellung auf ISO/IEC 8859-7 High Part, Basic Greek Set (1 Byte pro Zeichen) [bezeichnet als G2]
ISO-2022-JP mit der ISO-2022-JP-2-Darstellung von JIS X 0212, jedoch ohne die anderen Erweiterungen, wurde anschließend durch RFC 2237 aus dem Jahr 1997 als ISO-2022-JP-1 bezeichnet. [ 123 ]
IBM Japanisches TCP
IBM implementiert neun 7-Bit-Kodierungen auf Basis von ISO 2022 für Japanisch, die jeweils unterschiedliche Escape-Sequenzen verwenden: IBM-956, IBM-957, IBM-958, IBM-959, IBM-5052, IBM-5053, IBM-5054, IBM-5055 und ISO-2022-JP. Diese werden zusammenfassend als „TCP/IP-Zeichensätze für Japanisch“ bezeichnet. [ 124 ] Die Standardkodierung ISO-2022-JP ist gemäß RFC 1468 unter der CCSID 9148 definiert. [ 125 ]
| Codepage / CCSID | ACRI-Definitionsnummer | Escape-Sequenzen für ACRI [ 111 ] |
|---|---|---|
| 956 [ 126 ] | TCP-01 |
|
| 957 [ 127 ] | TCP-02 |
|
| 958 [ 128 ] | TCP-03 |
|
| 959 [ 129 ] | TCP-04 |
|
| 5052 [ 130 ] | TCP-05 |
|
| 5053 [ 131 ] | TCP-06 |
|
| 5054 [ 132 ] | TCP-07 |
|
| 5055 [ 133 ] | TCP-08 |
|
| 9148 [ 125 ] | TCP-16 |
|
JIS X 0213
Der erstmals im Jahr 2000 veröffentlichte Standard JIS X 0213 definiert eine aktualisierte Version von ISO-2022-JP ohne die Erweiterungen ISO-2022-JP-2, genannt ISO-2022-JP-3 . Die Ergänzungen von JIS X 0213 gegenüber dem Basisstandard JIS X 0208 führten zu einer neuen Registrierung für die erweiterte JIS-Ebene 1, während die neue Ebene 2 eine eigene Registrierung erhielt. Die weiteren Ergänzungen der Ebene 1 in der Ausgabe von 2004 führten zu einer zusätzlichen Registrierung für eine weitere Überarbeitung des Profils, genannt ISO-2022-JP-2004 . Neben den grundlegenden ISO-2022-JP-Bezeichnungscodes werden die folgenden Bezeichnungen anerkannt:
ESC ( IUmstellung auf JIS X 0201-1976 Kana-Satz (1 Byte pro Zeichen)ESC $ ( OUmstellung auf JIS X 0213-2000 Ebene 1 (2 Bytes pro Zeichen)ESC $ ( PUmstellung auf JIS X 0213-2000 Ebene 2 (2 Bytes pro Zeichen)ESC $ ( QUmstellung auf JIS X 0213-2004 Ebene 1 (2 Bytes pro Zeichen, nur ISO-2022-JP-2004)
Andere 7-Bit-Versionen
ISO-2022-KR ist in RFC 1557 von 1993 definiert. [ 134 ] Es kodiert ASCII und das koreanische DoppelbyteKS X 1001-1992[ 135 ] [ 136 ] , das früher KS C 5601-1987 hieß. Im Gegensatz zu ISO-2022-JP-2 verwendet es dieZeichen Shift Out und Shift Inzum Umschalten zwischen den Zeichensätzen, nachdem esESC $ ) Ceinmalig am Zeilenanfang eingefügt wurde, um KS X 1001 bis G1 zu kennzeichnen. [ 134 ]
ISO-2022-CN undISO-2022-CN-EXT sind in RFC 1922 von 1996 definiert. Es handelt sich um 7-Bit-Kodierungen, die sowohl die Shift-Out- als auch die Shift-In-Funktionen (zum Verschieben zwischen G0 und G1) sowie die 7-Bit-Escape-Codes der Einzelverschiebungsfunktionen SS2 und SS3 (zum Zugriff auf G2 und G3) verwenden. [ 137 ] Sie unterstützen die ZeichensätzeGB 2312(fürvereinfachtes Chinesisch) undCNS 11643(fürtraditionelles Chinesisch).
Das Basisprofil ISO-2022-CN verwendet ASCII als G0-Zeichensatz (Shift-In) und enthält außerdem GB 2312 und die ersten beiden Ebenen von CNS 11643 (da diese beiden Ebenen ausreichen, um alle traditionellen chinesischen Zeichen aus dem gemeinsamen Big5 darzustellen , zu dem der RFC in einem Anhang eine Entsprechung bereitstellt): [ 137 ]
ESC $ ) AUmstellung auf GB 2312-1980 (2 Bytes pro Zeichen) [bezeichnet als G1]ESC $ ) GUmschaltung auf CNS 11643-1992 Ebene 1 (2 Bytes pro Zeichen) [bezeichnet als G1]ESC $ * HUmschaltung auf CNS 11643-1992 Ebene 2 (2 Bytes pro Zeichen) [bezeichnet als G2]
Das ISO-2022-CN-EXT-Profil erlaubt die folgenden zusätzlichen Sätze und Ebenen. [ 137 ]
ESC $ ) EUmstellung auf ISO-IR-165 (2 Bytes pro Zeichen) [G1 zugeordnet]ESC $ + IUmschaltung auf CNS 11643-1992 Ebene 3 (2 Bytes pro Zeichen) [bezeichnet als G3]ESC $ + JUmschaltung auf CNS 11643-1992 Ebene 4 (2 Bytes pro Zeichen) [bezeichnet als G3]ESC $ + KUmschaltung auf CNS 11643-1992 Ebene 5 (2 Bytes pro Zeichen) [bezeichnet als G3]ESC $ + LUmschaltung auf CNS 11643-1992 Ebene 6 (2 Bytes pro Zeichen) [bezeichnet als G3]ESC $ + MUmschaltung auf CNS 11643-1992 Ebene 7 (2 Bytes pro Zeichen) [bezeichnet für G3]
Das ISO-2022-CN-EXT-Profil listet darüber hinaus weitere grafische Zeichensätze nach Guobiao-Standard auf , die zulässig sind, jedoch nur unter der Bedingung, dass ihnen registrierte ISO 2022-Escape-Sequenzen zugewiesen werden: [ 137 ]
- GB 12345 in G1
- GB 7589 oder GB 13131 in G2
- GB 7590 oder GB 13132 in G3
Das Zeichen nach dem Komma ESC(bei Einbyte-Zeichensätzen) bzw. dem Komma ESC $(bei Mehrbyte-Zeichensätzen) gibt den Typ des Zeichensatzes und des zugehörigen Arbeitssatzes an. In den obigen Beispielen (kennzeichnet das Zeichen (0x28) einen 94-Zeichen-Zeichensatz für den G0-Zeichensatz, während )das *Komma +(0x29–0x2B) die Zeichensätze G1–G3 kennzeichnet.
ISO-2022-KR und ISO-2022-CN werden seltener verwendet als ISO-2022-JP und werden aufgrund von Sicherheitsbedenken teilweise bewusst nicht unterstützt. Der von HTML5 verwendete WHATWG- Codierungsstandard ordnet ISO-2022-KR, ISO-2022-CN und ISO-2022-CN-EXT (sowie HZ-GB-2312 ) dem „Ersetzungs“-Decoder zu [ 113 ] , der alle Eingaben auf das Ersetzungszeichen (�) umwandelt. Dies dient der Verhinderung bestimmter Cross-Site-Scripting- Angriffe und ähnlicher Angriffe, die Unterschiede in der Codierungsunterstützung zwischen Client und Server ausnutzen. [ 114 ] Obwohl die gleiche Sicherheitsbedenken (unterschiedliche Interpretation von ASCII-Byte-Sequenzen) auch für ISO-2022-JP und UTF-16 gelten , konnten diese aufgrund ihrer deutlich häufigeren Verwendung in bereitgestellten Inhalten nicht so behandelt werden. [ 112 ]
Im April 2024 wurde eine Sicherheitslücke [ 138 ] in der Implementierung von ISO-2022-CN-EXT in glibc entdeckt , was zu Empfehlungen führte, die Kodierung auf Linux-Systemen vollständig zu deaktivieren. [ 139 ]
ISO/IEC 4873

Eine Teilmenge von ISO 2022, angewendet auf 8-Bit-Einzelbyte-Codierungen, ist in ISO/IEC 4873 definiert , das auch von Ecma International als ECMA-43 veröffentlicht wurde. ISO/IEC 8859 definiert 8-Bit-Codes für ISO/IEC 4873 (oder ECMA-43) Level 1. [ 9 ] [ 10 ]
ISO/IEC 4873 / ECMA-43 definiert drei Kodierungsebenen: [ 140 ]
- Ebene 1 umfasst den Zeichensatz C0, den ASCII-Zeichensatz G0, einen optionalen Zeichensatz C1 und einen optionalen Einzelbyte-Zeichensatz G1 (94 oder 96 Zeichen). G0 wird über GL und G1 über GR aufgerufen. Die Verwendung von Schiebefunktionen ist nicht zulässig.
- Level 2 umfasst neben einem obligatorischen G1-Satz einen (94 oder 96 Zeichen langen) Einzelbyte-G2- und/oder G3-Satz. Zulässig sind ausschließlich die Einzelverschiebungsfunktionen SS2 und SS3 (d. h. Sperrverschiebungen sind verboten). Sie greifen auf den GL-Bereich zu (einschließlich 0x20 und 0x7F im Fall eines 96-Zeichen-Satzes). SS2 und SS3 müssen in C1 an den Adressen 0x8E bzw. 0x8F verfügbar sein. Dieser minimale, für ISO 4873 erforderliche C1-Satz ist als ISO-IR-105 registriert. [ 70 ]
- Stufe 3, die neben den Einzelschaltungen auch die GR-Sperrschaltfunktionen LS1R, LS2R und LS3R ermöglicht, ansonsten aber die gleichen Einschränkungen wie Stufe 2 aufweist.
Frühere Versionen des Standards erlaubten die Verwendung von Nicht-ASCII-Zeichen im G0-Zeichensatz, sofern die in ISO/IEC 646 festgelegten invarianten Positionen erhalten blieben, die übrigen Positionen Leerzeichen (nicht Kombinationszeichen) zugeordnet wurden, 0x23 entweder £ oder # und 0x24 entweder $ oder ¤ zugeordnet wurde . [ 141 ] Beispielsweise ist die 8-Bit-Kodierung von JIS X 0201 mit früheren Versionen kompatibel. Dies wurde später geändert, um den Zeichensatz ISO/IEC 646:1991 IRV / ISO-IR Nr. 6 (ASCII) vollständig zu spezifizieren. [ 142 ] [ 143 ] [ 144 ]
Die Verwendung des ISO/IEC 646 IRV (seit 1991 mit ASCII synchronisiert) auf ISO/IEC 4873 Level 1 ohne gesetztes C1 oder G1, d. h. die Verwendung des IRV in einer 8-Bit-Umgebung, in der keine Schiebecodes verwendet werden und das höchste Bit immer Null ist, wird als ISO 4873 DV bezeichnet , wobei DV für „Standardversion“ steht. [ 145 ]
Wenn Zeichen in verschiedenen Zeichensätzen vorhanden sind, erlaubt die aktuelle Ausgabe von ISO/IEC 4873 / ECMA-43 nur die Verwendung dieser Zeichen im niedrigsten Zeichensatz, in dem sie vorkommen. [ 146 ] Wenn beispielsweise ein Zeichen sowohl im G1- als auch im G3-Zeichensatz vorkommt, muss es aus dem G1-Zeichensatz verwendet werden. Die Verwendung aus anderen Zeichensätzen war in früheren Ausgaben jedoch zulässig. [ 144 ]
ISO/IEC 8859 definiert vollständige Kodierungen auf Ebene 1 von ISO/IEC 4873 und erlaubt nicht die gleichzeitige Verwendung mehrerer Teile von ISO/IEC 8859. Stattdessen ist für die Ebenen 2 und 3 von ISO/IEC 4873 ISO/IEC 10367 zu verwenden. [ 9 ] [ 10 ] ISO/IEC 10367:1991 enthält die G0- und G1-Sätze, die denen der ersten neun Teile von ISO/IEC 8859 entsprechen (d. h. jene, die zum Zeitpunkt der Veröffentlichung 1991 existierten), sowie einige ergänzende Sätze. [ 147 ]
Escape-Sequenzen zur Zeichensatzbezeichnung werden zur Identifizierung oder zum Umschalten zwischen Versionen beim Informationsaustausch nur dann verwendet, wenn dies von einem weiteren Protokoll gefordert wird. In diesem Fall verlangt der Standard eine ISO/IEC-2022-Ankündigungssequenz, die die ISO/IEC-4873-Ebene angibt, gefolgt von einem vollständigen Satz von Escape-Sequenzen, die die Zeichensatzbezeichnungen für C0, C1, G0, G1, G2 und G3 spezifizieren (wobei die Bezeichnungen G2 und G3 für Ebene 1 weggelassen werden). Ein F -Byte von 0x7E kennzeichnet eine leere Zeichensatzmenge. Jede ISO/IEC-4873-Ebene hat ihre eigene ISO/IEC-2022-Ankündigungssequenz, die wie folgt lautet: [ 148 ]
| Code | Verhexen | Bekanntmachung |
|---|---|---|
ESC SP L | 1B 20 4C | ISO 4873 Stufe 1 |
ESC SP M | 1B 20 4D | ISO 4873 Stufe 2 |
ESC SP N | 1B 20 4E | ISO 4873 Stufe 3 |
Erweiterter Unix-Code
Extended Unix Code (EUC) ist ein 8-Bit- Zeichenkodierungssystem mit variabler Breite, das hauptsächlich für Japanisch , Koreanisch und vereinfachtes Chinesisch verwendet wird . Es basiert auf ISO 2022, und nur Zeichensätze, die der ISO-2022-Struktur entsprechen, können in EUC dargestellt werden. Bis zu vier kodierte Zeichensätze können dargestellt werden (in G0, G1, G2 und G3). Der G0-Satz wird über GL, der G1-Satz über GR und die Sätze G2 und G3 (falls vorhanden) über die einfachen Verschiebungen SS2 und SS3 aufgerufen, die als CR-Bytes (d. h. 0x8E bzw. 0x8F) verwendet werden und über GR (nicht GL) aufgerufen werden. [ 11 ] Sperrverschiebungscodes werden nicht verwendet. [ 12 ]
Der dem G0-Zeichensatz zugewiesene Code ist ASCII oder der nationale ISO-646 -Zeichensatz des jeweiligen Landes, wie z. B. KS-Roman (KS X 1003) oder JIS-Roman (die untere Hälfte von JIS X 0201 ). [ 11 ] Daher wird 0x5C ( Backslash in US-ASCII) in einigen Versionen von EUC-JP für das Yen-Zeichen und in einigen Versionen von EUC-KR für das Won-Zeichen verwendet.
G1 wird für einen 94x94-Zeichensatz verwendet, der in zwei Bytes dargestellt wird. Die EUC-CN- Form von GB 2312 und EUC-KR sind Beispiele für solche Zwei-Byte-EUC-Codes. EUC-JP umfasst Zeichen, die durch bis zu drei Bytes dargestellt werden (d. h. SS3 plus zwei Bytes), während ein einzelnes Zeichen in EUC-TW bis zu vier Bytes belegen kann (d. h. SS2 plus drei Bytes).
Der EUC-Code selbst verwendet nicht die Ansager- oder Bezeichnungssequenzen aus ISO 2022; er entspricht jedoch der folgenden Sequenz von vier Ansagersequenzen, deren Bedeutungen sich wie folgt aufschlüsseln. [ 149 ]
| Einzelne Sequenz | Hexadezimal | Merkmal von EUC bezeichnet |
|---|---|---|
ESC SP C | 1B 20 43 | ISO-8 (8-Bit, G0 in GL, G1 in GR) |
ESC SP Z | 1B 20 5A | G2 wird über SS2 aufgerufen |
ESC SP [ | 1B 20 5B | G3 wird über SS3 aufgerufen |
ESC SP \ | 1B 20 5C | Einzelverschiebungen rufen über GR auf |
Zusammengesetzter Text (X11)
Das X-Konsortium definierte 1989 ein ISO-2022-Profil namens Compound Text als Austauschformat. [ 150 ] Dieses verwendet nur vier Steuercodes: HT ( ), NL (Zeilenumbruch, kodiert als LF ) , ESC ( ) und CSI ( in seiner 8 - Bit - Darstellung ) , [ 151 ] wobei die SDS - CSI -Sequenz für die bidirektionale Textsteuerung verwendet wird. [ 152 ] Es handelt sich um einen 8-Bit-Code, der G0 und G1 für GL und GR verwendet und in seinem Ausgangszustand ISO-8859-1 entspricht. [ 153 ] Die folgenden F-Bytes werden verwendet: 0x090x0A0x1B0x9BCSI … ]
| Escape-Sequenztyp | Letztes Byte | Grafikset |
|---|---|---|
| GZD4, G1D4 (für 94-Zeichen-Sätze) | B( 0x42) | ASCII |
I( 0x49) | JIS X 0201 Katakana | |
J( 0x4A) | JIS X 0201 Roman | |
| G1D6 (für 96-Zeichen-Sätze) | A( 0x41) | ISO-8859-1 hoher Anteil |
B( 0x42) | ISO-8859-2 hoher Anteil | |
C( 0x43) | ISO-8859-3 hoher Anteil | |
D( 0x44) | ISO-8859-4 hoher Anteil | |
F( 0x46) | ISO-8859-7 hoher Anteil | |
G( 0x47) | ISO-8859-6 hoher Anteil | |
H( 0x48) | ISO-8859-8 hoher Anteil | |
L( 0x4C) | ISO-8859-5 hoher Anteil | |
M( 0x4D) | ISO-8859-9 hoher Anteil | |
| GZDM4, G1DM4 (für 2-Byte-Sätze) | A( 0x41) | GB 2312 |
B( 0x42) | JIS X 0208 | |
C( 0x43) | KS C 5601 |
Zur Angabe von Kodierungen mittels Labels definiert X11 Compound Text fünf DOCS-Sequenzen für den privaten Gebrauch: ESC % / 0( 1B 25 2F 30) für Kodierungen variabler Länge und ESC % / 1bis ESC % / 4für Kodierungen fester Länge mit jeweils ein bis vier Bytes. Anstatt eine weitere Escape-Sequenz zu verwenden, um zu ISO 2022 zurückzukehren , geben die beiden Bytes nach der ersten Escape-Sequenz die verbleibende Länge in Bytes an, kodiert in Basis-128 mit Bytes 0x80–FF. Das Kodierungslabel wird gemäß ISO 8859-1 vor dem kodierten Text eingefügt und mit STX ( ) abgeschlossen. [ 109 ]0x02
Vergleich mit anderen Kodierungen
Vorteile
- Da der gesamte Zeichensatz von ISO/IEC 2022 über GL aufgerufen werden kann, ist die Auswahl an Glyphen nicht wesentlich eingeschränkt, beispielsweise durch die fehlende Darstellung von GR und C1 in Systemen mit 7-Bit-Kodierung. Dadurch lässt sich auch in solchen Systemen ein großer Zeichensatz darstellen. Im Allgemeinen bietet diese 7-Bit-Kompatibilität keinen wirklichen Vorteil, außer der Abwärtskompatibilität mit älteren Systemen. Die überwiegende Mehrheit moderner Computer verwendet 8 Bit pro Byte.
- Im Vergleich zu Unicode umgeht ISO/IEC 2022 die Vereinheitlichung der chinesischen Schriftzeichen , indem es Sequenzcodes verwendet, um zwischen diskreten Kodierungen für verschiedene ostasiatische Sprachen umzuschalten. Dadurch werden die mit der Vereinheitlichung verbundenen Probleme vermieden, wie beispielsweise die Schwierigkeit, mehrere CJK -Sprachen mit ihren jeweiligen Zeichenvarianten in einem einzigen Dokument und einer einzigen Schriftart zu unterstützen.
Nachteile
- Da ISO/IEC 2022 eine zustandsbehaftete Kodierung ist, kann ein Programm nicht mitten in einen Textblock springen, um Zeichen zu suchen, einzufügen oder zu löschen. Dies macht die Textmanipulation im Vergleich zu nicht zustandsbehafteten Kodierungen sehr umständlich und langsam. Jeder Sprung mitten im Text kann ein Zurückspringen zur vorherigen Escape-Sequenz erfordern, bevor die nachfolgenden Bytes interpretiert werden können.
- Aufgrund der zustandsbehafteten Natur von ISO/IEC 2022 kann ein identisches und äquivalentes Zeichen in verschiedenen Zeichensätzen kodiert sein. Diese Zeichensätze können den Bereichen G0 bis G3 zugeordnet werden, die entweder durch einfache Verschiebungen oder durch Sperrverschiebungen auf GL oder GR aktiviert werden. Folglich können Zeichen auf verschiedene Weisen dargestellt werden, was bedeutet, dass zwei visuell identische und äquivalente Zeichenketten nicht zuverlässig auf Gleichheit verglichen werden können.
- Einige Systeme, wie DICOM und diverse E-Mail-Clients, verwenden neben der Unterstützung weiterer Kodierungen eine Variante von ISO-2022 (z. B. „ISO 2022 IR 100“ [ 155 ] ). [ 156 ] Diese Variabilität erschwert den portablen Datenaustausch zwischen Computersystemen.
- UTF-1 , das Multibyte -Unicode- Transformationsformat, das mit der Darstellung von 8-Bit-Steuerzeichen gemäß ISO/IEC 2022 kompatibel ist, weist im Vergleich zu UTF-8 verschiedene Nachteile auf , und der Wechsel von oder zu anderen Zeichensätzen, wie sie von ISO/IEC 2022 unterstützt werden, ist in Unicode-Dokumenten in der Regel unnötig.
- Aufgrund seiner Escape-Sequenzen ist es möglich, Angriffsbytefolgen zu erstellen, in denen eine schädliche Zeichenkette (z. B. Cross-Site-Scripting ) maskiert wird, bis sie in Unicode dekodiert wird. Dadurch kann sie die Bereinigung umgehen. [ 157 ] Die Verwendung dieser Kodierung wird daher von Malware-Schutzsystemen als verdächtig eingestuft. [ 158 ] 7-Bit-ISO-2022-Daten (mit Ausnahme von ISO-2022-JP) werden vollständig auf das entsprechende Ersatzzeichen in HTML5 abgebildet , um Angriffe zu verhindern. [ 113 ] [ 114 ] Eingeschränkte 8-Bit-Versionen des ISO-2022-Codes, die keine Escape-Sequenzen oder Sperr-Shift-Codes verwenden, wie z. B. Extended Unix Code , weisen dieses Problem nicht auf.
- Die Verkettung von Datenströmen kann Probleme verursachen. Profile wie ISO-2022-JP legen fest, dass der Datenstrom im ASCII-Zustand beginnt und endet. [ 115 ] Dies ist notwendig, um sicherzustellen, dass Zeichen in verketteten ISO-2022-JP- und/oder ASCII-Datenströmen korrekt interpretiert werden. Daraus folgt, dass beim Verketten eines Datenstroms, der mit einem Mehrbytezeichen endet, mit einem Datenstrom, der mit einem Mehrbytezeichen beginnt, ein Paar Escape-Sequenzen generiert wird, die kurz in den ASCII-Zustand wechseln und diesen sofort wieder verlassen. Gemäß Unicode Technical Report #36 („Unicode Security Considerations“) sollten jedoch Paare von ISO-2022-Escape-Sequenzen ohne dazwischenliegende Zeichen ein Ersatzzeichen („�“) generieren, um zu verhindern, dass sie zur Maskierung schädlicher Sequenzen wie Cross-Site-Scripting missbraucht werden . [ 159 ] Die Implementierung dieser Maßnahme, z. B. in Mozilla Thunderbird , hat zu Interoperabilitätsproblemen geführt, da unerwartete "�"-Zeichen erzeugt wurden, wenn zwei ISO-2022-JP-Streams verkettet wurden. [ 157 ]
Siehe auch
- ISO 2709
- ISO/IEC 646
- ISO-IR-102
- Steuercodes C0 und C1
- CJK-Zeichen
- MARC-Standards
- Mojibake
- luit
- ISO/IEC JTC 1/SC 2
Fußnoten
- ^ Japanisch :区点, romanisiert : kuten ; vereinfachtes Chinesisch :区位; traditionelles Chinesisch :區位; Pinyin : qūwèi ; Koreanisch : 행렬 ; Hanja : 行列; RR : haeng-nyeol
- ^ traditionelles Chinesisch :區; vereinfachtes Chinesisch :区; Pinyin : qū ; Japanische Aussprache : ku ; lit. 'Zone'; Koreanisch : 행 ; Hanja : 行; RR : haeng
- ^ Japanisch :点, romanisiert : zehn , lit. ' Punkt ' ; Chinesisch :位; Pinyin : wèi ; lit. 'Position'; Koreanisch : 열 ; Hanja : 列; RR : ja
- ^ Japanisch :面, romanisiert : men , wörtlich: ' Gesicht '
- ^ a b Aus historischen Gründen nur für die F -Bytes 0x40 ( ), 0x41 ( ) und 0x42 ( ) spezifiziert . [ 90 ] Einige Implementierungen, wie z. B. die SoftBank 2G Emoji -Kodierung, verwenden zusätzliche Escape-Sequenzen dieser Form für nicht ISO-2022-konforme Zwecke. [ 97 ]
@AB - ^ Aufgeführt von MARC-8 . [ 3 ] Siehe Fußnoteunten für Hintergrundinformationen.
ESC , F - ^ F , angepasst an den Bereich 1-63, gibt an, welche (aufwärtskompatible) Revision der unmittelbar folgenden Registrierung erforderlich ist, damit ältere Systeme erkennen, dass sie veraltet sind. [ 98 ]
- In früheren Versionen existierten keine 96-Zeichen-Zeichensätze, und die heute für 96-Zeichen-Zeichensätze verwendeten Escape-Sequenzen waren für zusätzliche 94-Zeichen-Zeichensätze reserviert. Dementsprechend wurde die Sequenz in frühen Versionen des Standards so definiert, dass weitere 94-Zeichen-Zeichensätze mit G0 belegt wurden. [ 99 ] Da 96-Zeichen-Zeichensätze nicht mit G0 belegt werden können, wird dieses erste Byte in der aktuellen Version des Standards nicht verwendet. Es ist jedoch weiterhin in MARC-8 aufgeführt . [ 3 ]
ESC 0x1B 0x2C - ^ Siehe beispielsweise auch Printronix (2012), OKI® Programmer's Reference Manual (PDF) , S. 26, archiviert vom Original (PDF) am 25.09.2019 , abgerufen am 25.09.2019.für ein neueres System, das
ESC ( Hvon DBCS auf ASCII umschaltet.
Referenzen
- ^ ECMA-35 (1994) , Kurze Geschichte
- ^ ECMA-35 (1994) , S. 51, Anhang D
- ^ a b c d e „Technik 2: Verwendung von standardmäßigen alternativen Grafikzeichensätzen“ . MARC 21 Spezifikationen für Datensatzstruktur, Zeichensätze und Austauschmedien . Library of Congress . 05.12.2007. Archiviert vom Original am 22.07.2020 . Abgerufen am 19.07.2020 .
- ^ „ECMA-35: Zeichencodestruktur und Erweiterungstechniken (Webseite)“ . ECMA International . Archiviert vom Original am 25.04.2022 . Abgerufen am 27.04.2022 .
- ^ a b c d ECMA-35 (1994) , S. 15–16, Kapitel 8.1
- ^ a b ECMA-35 (1994) , Kapitel 13
- ^ a b ECMA-35 (1994) , Kapitel 12, 14
- ^ a b ECMA-35 (1994) , Kapitel 11
- ^ a b c d e ISO/IEC FDIS 8859-10 (1998) , S. 1, Kapitel 1 („Anwendungsbereich“)
- ^ a b c d e ECMA-144 (2000) , S. 1, Kapitel 1 („Geltungsbereich“)
- ^ a b c d e f Lunde (2008) , S. 242–245, Kapitel 4 („Kodierungsverfahren“), Abschnitt „EUC-Kodierung“
- ^ a b c d Lunde (2008) , S. 253–255, Kapitel 4 ("Kodierungsverfahren"), Abschnitt "EUC versus ISO-2022-Kodierungen".
- ^ a b ISO-IR-196 (1996)
- Moy , Edward; Gildea, Stephen; Dickey, Thomas. „Steuerungssequenzen beginnen mit ESC“ . XTerm -Steuerungssequenzen . Archiviert vom Original am 10.10.2019 . Abgerufen am 04.10.2019 .
- ^ ECMA-35 (1994) , Kapitel 6, 7
- ^ ECMA-35 (1994) , Kapitel 8
- ^ ECMA-35 (1994) , Kapitel 9
- ^ a b ECMA-35 (1994) , Kapitel 15
- ^ Lunde (2008) , S. 228–234, Kapitel 4 („Kodierungsverfahren“), Abschnitt „ISO-2022-Kodierung“
- ^ Lunde (2008) , S. 19–20, Kapitel 1 („CJKV Informationsverarbeitungsübersicht“), Abschnitt „Was sind Zeilenzellen und Flächenzeilenzellen?“
- ^ ECMA-35 (1994) , S. 4, Definition 4.11
- ^ ECMA-35 (1994) , S. 5, Definition 4.18
- ^ ISO/IEC JTC1/SC2/WG2 (2025). „Anhang K (informativ): Notationen von Oktettwertdarstellungen“. Informationstechnologie – Universeller codierter Zeichensatz (UCS) (Komiteeentwurf). S. 3463. ISO/IEC CD.3 10646:2025, JTC1/SC2 /WG2 N5347.
Die Oktettwertnotation nach ISO/IEC 2022 (und anderen Zeichencodierungsstandards) kann somit in die in diesem Dokument verwendete Oktettwertnotation umgewandelt werden, indem die Werte von x und y in hexadezimale Notation umgewandelt werden. Zum Beispiel entspricht 04/15 dem Wert 4F.
{{citation}}: CS1 Wartung: numerische Namen: Autorenliste ( Link ) - ^ Siehe beispielsweise ISO-IR-14 (1975) , in der die G0-Bezeichnung des römischen Zeichensatzes JIS X 0201 wie folgt
ESC 2/8 4/10: . - ^ ECMA-35 (1994) , S. 5, Kapitel 5.1
- ^ Siehe beispielsweise RFC 1468 (1993) , in dem die G0-Bezeichnung des römischen Zeichensatzes JIS X 0201 wie folgt
ESC ( J: . - ^ ECMA-35 (1994) , S. 7, Kapitel 6.2
- ^ ECMA-35 (1994) , S. 10, Kapitel 6.3.2
- ^ ECMA-35 (1994) , S. 4, Definition 4.17
- ^ ECMA-35 (1994) , S. 4, Definition 4.14
- ^ ECMA-35 (1994) , S. 28, Kapitel 13.1
- ^ a b c ECMA-35 (1994) , S. 33, Kapitel 13.3.3
- ^ ECMA-48 (1991) , S. 24–26, Kapitel 5.4
- ^ a b c d ECMA-35 (1994) , S. 11, Kapitel 6.4.3
- ^ ISO-IR-208 (1999)
- ^ ISO-IR-155 (1990)
- ^ ISO-IR-164 (1992)
- ^ a b ECMA-35 (1994) , S. 10, Kapitel 6.3.3
- ^ Google Inc. (2014). „ansi.go, Zeile 134“ . ANSI-Escape-Sequenzbibliothek für Go . Archiviert vom Original am 30.04.2022 . Abgerufen am 14.09.2019 .
- ^ ECMA-43 (1991) , S. 5, Kapitel 7 („Spezifikation der Zeichen des 8-Bit-Codes“)
- ^ ISO/IEC FDIS 8859-10 (1998) , S. 3, Kapitel 6 („Spezifikation des codierten Zeichensatzes“)
- ^ ECMA-144 (2000) , S. 3, Kapitel 6 („Spezifikation des codierten Zeichensatzes“)
- ^ ECMA-43 (1991) , S. 19, Anhang C („Zusammengesetzte grafische Zeichen“)
- ^ a b ECMA-35 (1994) , S. 10, Kapitel 6.4.1
- ^ a b ECMA-35 (1994) , S. 11, Kapitel 6.4.4
- ^ a b c ECMA-35 (1994) , S. 11, Kapitel 6.4.2
- ^ ISO-IR-104 (1985)
- ^ ISO-IR-1 (1975)
- ^ a b ECMA-35 (1994) , S. 19, Kapitel 8.5.1
- ^ a b ECMA-35 (1994) , S. 19, Kapitel 8.5.2
- ^ ECMA-43 (1991) , S. 8, Kapitel 7.6 („C1-Satz“)
- ^ a b ECMA-35 (1994) , S. 29, Kapitel 13.2.1
- ^ a b ECMA-35 (1994) , S. 12, Kapitel 6.5.1
- ^ ECMA-35 (1994) , S. 12, Kapitel 6.5.2
- ^ a b c ISO-IR , S. 19, Kapitel 2.7 („Einzelne Steuerfunktionen“)
- ^ ECMA-35 (1994) , S. 12, Kapitel 6.5.4
- ^ ECMA-48 (1991) , Kapitel 5.5
- ^ ISO/TC 97/SC 2 (30.12.1976). Zurücksetzen auf den Ausgangszustand (RIS) (PDF) . ITSCJ/ IPSJ . ISO-IR -35.
{{citation}}: CS1 Wartung: numerische Namen: Autorenliste ( Link ) - ^ ECMA-35 (1994) , S. 12, Kapitel 6.5.3
- ^ a b ECMA-35 (1994) , S. 14, Kapitel 7.3, Tabelle 2
- ^ ISO-IR-14 (1975)
- ^ a b ITU-T (11.08.1995). Empfehlung T.51 (1992) Änderung 1. Archiviert vom Original am 02.08.2020 . Abgerufen am 25.12.2019 .
- ^ ISO-IR-106 (1985)
- ^ ECMA-35 (1994) , S. 15, Kapitel 7.3, Anmerkung 23
- ^ ISO-IR-140 (1987)
- ^ ISO-IR-7 (1975)
- ^ ISO-IR-26 (1976)
- ^ ISO-IR-36 (1977)
- ^ ECMA-35 (1980) , S. 8, Kapitel 5.1.7
- ^ a b ISO-IR-105 (1985)
- ^ a b c d ECMA-35 (1994) , S. 17, Kapitel 8.3.1
- ^ a b c d ECMA-35 (1994) , S. 23, Kapitel 9.3.1
- ^ a b c ECMA-35 (1994) , S. 19, Kapitel 8.4
- ^ a b c ECMA-35 (1994) , S. 17, Kapitel 8.3.2
- ^ ECMA-35 (1994) , S. 23–24, Kapitel 9.4
- ^ ECMA-35 (1994) , S. 27, Kapitel 11.1
- ^ ECMA-35 (1994) , S. 17, Kapitel 8.3.3
- ^ ECMA-35 (1994) , S. 47, Anhang B
- ^ ISO-IR , S. 2, Kapitel 1 („Einleitung“)
- ^ ISO/IEC 2375 (2003)
- ^ a b "Verarbeitung der SGML-Deklaration in SP" . SP: ein SGML-System, das dem internationalen Standard ISO 8879 entspricht .
- ^ "20: SGML-Deklaration von HTML 4" . HTML 4.01-Spezifikation . W3C .
- ^ ISO-IR , S. 10, Kapitel 2.2 („94-Zeichen-Grafikzeichensatz mit zweitem Zwischenbyte“)
- ^ ARIB STD-B24 (2008) , S. 39, Teil 2, Tabelle 7-3
- ^ Mascheck, Sven; Le Breton, Stefan; Hamilton, Richard L. „Über den ‚alternativen Strichzeichnungszeichensatz‘“" . ~sven_mascheck/ . Archiviert vom Original am 29.12.2019 . Abgerufen am 08.01.2020 .
- ^ ECMA-35 (1994) , S. 36, Kapitel 14.4
- ^ ECMA-35 (1994) , S. 36, Kapitel 14.4.2, Anmerkung 48
- ^ ECMA-35 (1994) , S. 36, Kapitel 14.4.2, Anmerkung 47
- ^ ETS 300 706 (1997) , S. 103, Kapitel 14 („Dynamisch neu definierbare Charaktere“)
- ^ a b c d e f g h i j k l m n o p q ECMA-35 (1994) , S. 35–36, Kapitel 14.3.2
- ^ ISO/IEC 10646 (2017) , S. 19–20, Kapitel 12.4 („Identifizierung des Satzes von Steuerfunktionen“)
- ^ ECMA-35 (1994) , S. 32, Tabelle 5
- ^ a b c ECMA-35 (1994) , S. 37–41, Kapitel 15.2
- ^ ECMA-35 (1994) , S. 34, Kapitel 14.2.2
- ^ ECMA-35 (1994) , S. 34, Kapitel 14.2.3
- ^ Digital . „DECDWL – Doppelbreite, einfache Zeilenhöhe“ . VT510 Video Terminal Programmer Information . Archiviert vom Original am 02.08.2020 . Abgerufen am 17.01.2020 .
- ^ Kawasaki, Yusuke (2010). „Encode::JP::Emoji::Encoding“ . Encode-JP-Emoji . Zeile 268. Archiviert vom Original am 30.04.2022 . Abgerufen am 28.05.2020 .
- ^ ECMA-35 (1994) , S. 36–37, Kapitel 14.5
- ^ ECMA-35 (1980) , S. 14–15, Kapitel 5.3.7
- ^ a b c d ISO-IR , S. 20, Kapitel 2.8.1 („Codierungssysteme mit Standardrücklauf“)
- ^ a b c d ECMA-35 (1994) , S. 41–42, Kapitel 15.4
- ^ a b c d e ISO-IR , S. 21, Kapitel 2.8.2 („Codierungssysteme ohne Standardrücklauf“)
- ^ ECMA-35 (1994) , S. 41, Kapitel 15.3
- ^ a b c ISO/IEC 10646 (2017) , S. 19, Kapitel 12.2 („Identifizierung eines UCS-Codierungsschemas“)
- ^ ISO/IEC 10646 (2017) , S. 18–19, Kapitel 12.1 („Zweck und Kontext der Kennzeichnung“)
- ^ ISO-IR-192 (1996)
- ^ ISO-IR-195 (1996)
- ^ ISO/IEC 10646 (2017) , S. 20, Kapitel 12.5 („Bezeichnung des Kodierungssystems von ISO/IEC 2022“)
- ^ a b Scheifler (1989) , § Nicht standardmäßige Zeichensatzkodierungen
- ^ Lunde (2008) , S. 229–230, Kapitel 4 („Kodierungsverfahren“), Abschnitt „ISO-2022-Kodierung“ „Diejenigen Kodierungen, die in der Vergangenheit häufig verwendet wurden oder auch heute noch für bestimmte Zwecke verwendet werden, wurden hervorgehoben.“
- ^ a b „Zusätzliche, für die Codierung erforderliche Informationen“ . IBM Globalisierung – Codierte Zeichensatzkennungen . IBM . Archiviert vom Original am 07.01.2015.
- ^ a b c WHATWG-Codierungsstandard , Abschnitt 2 („Sicherheitshintergrund“)
- ^ a b c WHATWG-Kodierungsstandard , Kapitel 4.2 („Namen und Bezeichnungen“), Anker „Ersetzung“
- ^ a b c d WHATWG-Kodierungsstandard , Abschnitt 14.1 („Ersatz“)
- ^ a b c d e f RFC 1468 (1993)
- ^ a b c „Code Page Identifiers“ . Windows Dev Center . Microsoft. Archiviert vom Original am 16.06.2019 . Abgerufen am 16.09.2019 .
- ^ a b WHATWG-Kodierungsstandard , Abschnitt 12.2 („ISO-2022-JP“)
- ^ Chang, Hye-Shik. „Modules/cjkcodecs/_codecs_iso2022.c, Zeile 1122“ . cPython-Quellcodebaum . Python Software Foundation. Archiviert vom Original am 30.04.2022 . Abgerufen am 15.09.2019 .
- ^ „Codecs – Codec-Registry und Basisklassen § Standardkodierungen“ . Python 3.7.4-Dokumentation . Python Software Foundation. Archiviert vom Original am 28.07.2019 . Abgerufen am 16.09.2019 .
- ^ „2: Zeichensätze und Zeichensatzkonvertierung“ . Technische Referenz für digitales UNIX zur Verwendung japanischer Funktionen . Digital Equipment Corporation , Compaq .
- ^ a b Lunde (2008) , S. 236–238, Kapitel 4 („Kodierungsverfahren“), Abschnitt „Der Vorgänger der ISO-2022-JP-Kodierung – JIS-Kodierung“
- ^ RFC 1554 (1993)
- ^ RFC 2237 (1997)
- ^ „PQ02042: Neue Funktion zur Bereitstellung von C/370 iconv()-Unterstützung für japanisches ISO-2022-JP“ . IBM . 19.01.2021. Archiviert vom Original am 04.01.2022 . Abgerufen am 04.01.2022 .
- ^ a b "CCSID 9148" . IBM Globalisierung – Codierte Zeichensatzkennungen . IBM . Archiviert vom Original am 29.11.2014.
- ^ "CCSID 956" . IBM Globalisierung – Codierte Zeichensatzkennungen . IBM . Archiviert vom Original am 02.12.2014.
- ^ "CCSID 957" . IBM Globalisierung – Codierte Zeichensatzkennungen . IBM . Archiviert vom Original am 30.11.2014.
- ^ "CCSID 958" . IBM Globalisierung – Codierte Zeichensatzkennungen . IBM . Archiviert vom Original am 1. Dezember 2014.
- ^ "CCSID 959" . IBM Globalisierung – Codierte Zeichensatzkennungen . IBM . Archiviert vom Original am 02.12.2014.
- ^ "CCSID 5052" . IBM Globalisierung – Codierte Zeichensatzkennungen . IBM . Archiviert vom Original am 29.11.2014.
- ^ "CCSID 5053" . IBM Globalisierung – Codierte Zeichensatzkennungen . IBM . Archiviert vom Original am 29.11.2014.
- ^ "CCSID 5054" . IBM Globalisierung – Codierte Zeichensatzkennungen . IBM . Archiviert vom Original am 29.11.2014.
- ^ "CCSID 5055" . IBM Globalisierung – Codierte Zeichensatzkennungen . IBM . Archiviert vom Original am 29.11.2014.
- ^ a b RFC 1557 (1993)
- ^ „KS X 1001:1992“ (PDF) . Archiviert (PDF) vom Original am 26.09.2007 . Abgerufen am 12.07.2007 .
- ^ ISO-IR-149 (1988)
- ^ a b c d RFC 1922 (1996)
- ^ "CVE-2024-2961" .
- ^ „GLIBC-Schwachstelle auf Servern, die PHP ausliefern“ .
- ^ ECMA-43 (1991) , S. 9–10, Kapitel 8 („Levels“)
- ^ ECMA-43 (1985) , S. 7–11, Kapitel 7.3 („Die G0-Menge“)
- ^ ECMA-43 (1991) , S. 6–8, Kapitel 7.4 („G0-Menge“)
- ^ ECMA-43 (1991) , S. 11, Kapitel 10.3 („Identifizierung einer Version“)
- ^ a b ECMA-43 (1991) , S. 23, Anhang E („Hauptunterschiede zwischen der zweiten Ausgabe (1985) und der vorliegenden (dritten) Ausgabe dieses ECMA-Standards“)
- ^ IPTC (1995). Das von IPTC empfohlene Nachrichtenformat (PDF) (5. Aufl.). IPTC TEC 7901. Archiviert (PDF) vom Original am 25.01.2022 . Abgerufen am 14.01.2020 .
- ^ ECMA-43 (1991) , S. 10, Kapitel 9.2 („Eindeutige Codierung von Zeichen“)
- ^ van Wingen, Johan W (1999). „8. Code Extension, ISO 2022 and 2375, ISO 4873 and 10367“ . Zeichensätze. Buchstaben, Token und Codes . Terena. Archiviert vom Original am 1. August 2020. Abgerufen am 2. Oktober 2019 .
- ^ ECMA-43 (1991) , S. 10–11, Kapitel 10 („Identifizierung von Version und Versionsstufe“)
- ^ IBM . „Character Data Representation Architecture (CDRA)“ . IBM . S. 157–162 . Archiviert vom Original am 23.06.2019 . Abgerufen am 18.06.2020 .
- ^ Scheifler (1989)
- ^ Scheifler (1989) , § Steuerzeichen
- ^ Scheifler (1989) , § Direktionalität
- ^ Scheifler (1989) , § Standard-Zeichensatzkodierungen
- ^ Scheifler (1989) , § Genehmigte Standardkodierungen
- ^ „DICOM PS3.2 2016d – Konformität; D.6.2 Zeichensätze; D.6 Unterstützung von Zeichensätzen“ . Archiviert vom Original am 16.02.2020 . Abgerufen am 21.05.2020 .
- ^ „DICOM ISO 2022 Variation“ . Archiviert vom Original am 30.04.2013 . Abgerufen am 25.07.2009 .
- ^ a b Sivonen, Henri (17.12.2018). „(UNEINGEREICHTER ENTWURF) Keine U+FFFD-Generierung für ASCII-Zustandsinhalte der Länge Null zwischen ISO-2022-JP-Escape-Sequenzen“ (PDF) . Archiviert (PDF) vom Original am 21.02.2019 . Abgerufen am 21.02.2019 .
- ^ „935453 – Telemetriedaten zu HZ und anderen Kodierungen sammeln, die wir möglicherweise entfernen möchten“ . Archiviert vom Original am 19.05.2017 . Abgerufen am 18.06.2018 .
- ^ Davis, Mark; Suignard, Michel (19.09.2014). „3.6.2 Ausgabe für alle Eingaben“ . Unicode Technical Report Nr. 36: Unicode Security Considerations (Revision 15) . Unicode Consortium. Archiviert vom Original am 22.02.2019 . Abgerufen am 21.02.2019 .
zitierte Normen und Registerindizes
- ARIB (2008). ARIB STD-B24: Datenkodierungs- und Übertragungsspezifikation für digitales Fernsehen (PDF) (ARIB-Standard). 5.2-E1. Band 1. Archiviert (PDF) vom Original am 10.07.2017 . Abgerufen am 10.07.2017 .
- ECMA (1980). ECMA-35: Erweiterung des 7-Bit-codierten Zeichensatzes (PDF) (ECMA-Standard) (2. Aufl.).
- ECMA (1994). ECMA-35: Zeichencodestruktur und Erweiterungstechniken (PDF) (ECMA-Standard) (6. Aufl.).
- ECMA (1985). ECMA-43: 8-Bit Coded Character Set Structure and Rules (PDF) (ECMA Standard) (2nd ed.).
- ECMA (1991). ECMA-43: 8-Bit Coded Character Set Structure and Rules (PDF) (ECMA Standard) (3rd ed.).
- ECMA (1991). ECMA-48: Steuerfunktionen für codierte Zeichensätze (PDF) (ECMA-Standard) (5. Aufl.).
- ECMA (2000). ECMA-144: 8-Bit Single-Byte Coded Graphic Character sets: Latin Alphabet No. 6 (PDF) (ECMA Standard) (3rd ed.).
- Europäische Rundfunkunion (1997). ETS 300 706: Erweiterte Teletext-Spezifikation (PDF) (Europäische Telekommunikationsstandards). ETSI .
- ISO/IEC JTC 1/SC 2 (2003). ISO/IEC 2375:2003: Informationstechnik – Verfahren zur Registrierung von Escape-Sequenzen und codierten Zeichensätzen . ISO .
{{cite book}}: CS1 Wartung: numerische Namen: Autorenliste ( Link ) - ISO/IEC JTC 1/SC 2 (1998-02-12). ISO/IEC FDIS 8859-10: Informationstechnik — 8-Bit-Einzelbyte-codierte grafische Zeichensätze — Teil 10: Lateinisches Alphabet Nr. 6 (PDF) (Final Draft International Standard).
{{cite book}}: CS1 Wartung: numerische Namen: Autorenliste ( Link ) - ISO/IEC JTC 1/SC 2 (2017). ISO/IEC 10646: Informationstechnik – Universeller codierter Zeichensatz (UCS) (ISO-Standard) (5. Ausgabe). ISO .
{{cite book}}: CS1 Wartung: numerische Namen: Autorenliste ( Link ) - ISO-IR: Internationales ISO/IEC-Register codierter Zeichensätze zur Verwendung mit Escape-Sequenzen (PDF) (Registerindex). ITSCJ/ IPSJ . Archiviert vom Original (PDF) am 12.05.2023 . Abgerufen am 12.05.2023 .
- Scheifler, Robert W. (1989). Zusammengesetzte Textkodierung (X-Konsortium-Standard). X-Konsortium .
- van Kesteren, Anne . WHATWG-Kodierungsstandard (WHATWG Living Standard). WASWG .
zitierte registrierte Codesätze
- ISO/TC 97/SC 2 (1975-12-01). ISO-IR-1: Der Satz von Steuerzeichen der ISO 646 (PDF) . ITSCJ/ IPSJ .
{{citation}}: CS1 Wartung: numerische Namen: Autorenliste ( Link ) - Schwedische Standardisierungskommission (01.12.1975). ISO-IR-7: NATS-Steuersatz für Zeitungstextübertragung (PDF) . ITSCJ/ IPSJ .
- Japanisches Komitee für Industrienormen (1975-12-01). ISO-IR-14: Der japanische lateinische Zeichensatz (PDF) . ITSCJ/ IPSJ .
- IPTC (25.03.1976). ISO-IR-26: Steuersatz für Zeitungstextübertragung (PDF) . ITSCJ/ IPSJ .
- ISO/TC 97/SC 2 (15.10.1977). ISO-IR-36: Der Satz von Steuerzeichen der ISO 646, wobei IS4 durch Single Shift für G2 (SS2) ersetzt wird (PDF) . ITSCJ/ IPSJ .
{{citation}}: CS1 Wartung: numerische Namen: Autorenliste ( Link ) - ISO/TC97/SC2/WG-7 ; ECMA (01.08.1985). ISO-IR-104: Mindest-C0-Satz für ISO 4873 (PDF) . ITSCJ/ IPSJ .
{{citation}}: CS1 Wartung: numerische Namen: Autorenliste ( Link ) - ISO/TC97/SC2/WG-7 ; ECMA (01.08.1985). ISO-IR-105: Mindest-C1-Set für ISO 4873 (PDF) . ITSCJ/ IPSJ .
{{citation}}: CS1 Wartung: numerische Namen: Autorenliste ( Link ) - ITU (1985-08-01). ISO-IR-106: Teletex Primärer Satz von Steuerfunktionen (PDF) . ITSCJ/ IPSJ .
- Úřad pro normalizaci a měřeni (1987-07-31). ISO-IR-140: Der C0-Steuerzeichensatz von ISO 646, wobei EM durch SS2 ersetzt wird (PDF) . ITSCJ/ IPSJ .
- Koreanisches Normungsinstitut (1988-10-01). ISO-IR-149: Koreanischer Zeichensatz für den Informationsaustausch (KS C 5601:1987) (PDF) . ITSCJ/ IPSJ .
- ISO/IEC/JTC1/SC2/WG3 (1990-04-16). ISO-IR-155: Basic Box-Drawings Set (PDF) . ITSCJ/ IPSJ .
{{citation}}: CS1 Wartung: numerische Namen: Autorenliste ( Link ) - CCITT (13.07.1992). ISO-IR-164: Hebräischer Ergänzungssatz grafischer Zeichen (PDF) . ITSCJ/ IPSJ .
- ECMA (22.04.1996). ISO-IR-192: UCS Transformation Format (UTF-8), Implementierungsstufe 3, ohne Standardrückgabe (PDF) . ITSCJ/ IPSJ .
- ECMA (22.04.1996). ISO-IR-195: UCS Transformation Format (UTF-16), Implementierungsstufe 3, ohne Standardrückgabe (PDF) . ITSCJ/ IPSJ .
- ECMA (22.04.1996). ISO-IR-196: UCS Transformation Format (UTF-8), mit Standardrückgabe (PDF) . ITSCJ/ IPSJ .
- National Standards Authority of Ireland (07.12.1999). ISO-IR-208: Ogham-kodierter Zeichensatz für den Informationsaustausch (PDF) . ITSCJ/ IPSJ .
Internet Requests For Comment zitiert
- Murai, J.; Crispin, M.; van der Poel, E. (1993). „RFC 1468: Japanische Zeichenkodierung für Internetnachrichten“ . Requests for Comments . IETF . doi : 10.17487/rfc1468 .
- Ohta, M.; Handa, K. (1993). „RFC 1554: ISO-2022-JP-2: Mehrsprachige Erweiterung von ISO-2022-JP“ . Requests for Comments . IETF . doi : 10.17487/rfc1554 .
- Choi, U.; Chon, K.; Park, H. (1993). „RFC 1557: Koreanische Zeichenkodierung für Internetnachrichten“ . Requests for Comments . IETF . doi : 10.17487/rfc1557 .
- Zhu, HF.; Hu, DY.; Wang, ZG.; Kao, TC.; Chang, WCH.; Crispin, M. (1996). „RFC 1922: Chinesische Zeichenkodierung für Internetnachrichten“ . Requests for Comments . IETF . doi : 10.17487/rfc1922 .
- Tamaru, K. (1997). „RFC 2237: Japanische Zeichenkodierung für Internetnachrichten“ . Requests for Comments . IETF . doi : 10.17487/rfc2237 .
Weitere zitierte Veröffentlichungen
- Lunde, Ken (2008). CJKV-Informationsverarbeitung (2. Aufl.). O'Reilly Media . ISBN 9780596514471Die
Weiterführende Literatur
- Lunde, Ken (1998). CJKV Informationsverarbeitung . Cambridge, Massachusetts: O'Reilly & Associates . ISBN 1-56592-224-7Die
Externe Links
- ISO/IEC 2022:1994
- ISO/IEC 2022:1994/Cor 1:1999
- ECMA-35 , entspricht ISO/IEC 2022 und ist frei herunterladbar.
- Internationales Register codierter Zeichensätze zur Verwendung mit Escape-Sequenzen , eine vollständige Liste der zugewiesenen Zeichensätze und ihrer Escape-Sequenzen
- Geschichte der Zeichencodes in Nordamerika, Europa und Ostasien ab 1999, überarbeitet 2004
- Ken Lundes CJK.INF , archiviert am 15.05.2021 in der Wayback Machine : ein Dokument über die Kodierung der chinesischen, japanischen und koreanischen (CJK) Sprachen, einschließlich einer Diskussion der verschiedenen Varianten von ISO/IEC 2022.