UTF-EBCDIC
UTF-EBCDIC ist ein Zeichenkodierung In der Lage, alle 1.112.064 gültigen Zeichen zu codieren Codepunkte in Unicode Verwenden Sie eins bis fünf ein.Byte (8-Bit-) Codeeinheiten (im Gegensatz zu maximal vier für UTF-8).[1] So soll es sein Ebcdic-freundlich, so dass ältere ebcdische Anwendungen auf Mainframes kann die Charaktere ohne große Schwierigkeiten verarbeiten. Die Vorteile für bestehende EBCDIC-basierte Systeme sind ähnlich wie UTF-8Die Vorteile für bestehende ASCII-basierte Systeme. Details zu UTF-EBCDIC sind im technischen Bericht Nr. 16 von Unicode definiert.
Um die UTF-EBCDIC-codierte Version einer Reihe von Unicode-Codepunkten zu produzieren, wird zuerst eine Codierung von UTF-8 (in der Spezifikation als UTF-8-mod bekannt) angewendet (erstellen, was die Spezifikation als i8-Sequenz nennt). Der Hauptunterschied zwischen dieser Codierung und UTF-8 besteht darin, dass Unicode-Codepunkte U+0080 über U+009f (die C1 -Kontrollcodes) als einzelnes Byte dargestellt und daher später entsprechenden Ebcdic -Kontrollcodes zugeordnet werden. Um dies zu erreichen, verwendet UTF-8-MOD 101xxxxx anstelle von 10xxxxxx als Format für nachverfolgende Bytes in einer Multi-Byte-Sequenz. Da dies nur 5 Bit anstelle von 6 aufnehmen kann, ist die UTF-8-Mod-Codierung von CodePoints über U+03ff größer als die UTF-8-Codierung.
Die UTF-8-MOD-Transformation lässt die Daten in einem ASCII-basierten Format (z. B. U+0041 "A" wird immer noch als 01000001 codiert) Um die endgültige UTF-EBCDIC-Codierung zu erzeugen. Zum Beispiel 01000001 karten in dieser Tabelle auf 11000001; Somit ist die UTF-EBCDIC-Codierung von U+0041 (Unicode's "A") 0xC1 (Ebcdics "A").
Diese codierende Form wird selten verwendet, selbst auf den EBCDIC-basierten Mainframes, für die sie entworfen wurde. IBM EBCDIC-basierte Mainframe-Betriebssysteme wie z. Z/OS, normalerweise verwenden UTF-16 Für den vollständigen Unicode -Unterstützung. Zum Beispiel, IBM DB2, Cobol, Pl/i, Java und die IBM Xml Toolkit unterstützen UTF-16 auf IBM Mainframes.
Codepage -Layout
Es gibt 160 Zeichen mit Single-Byte-Codierungen in UTF-EBCDIC (im Vergleich zu 128 in UTF-8). Wie zu sehen ist, ähnelt der Single-Byte-Teil IBM-1047 anstelle von IBM-37 Aufgrund der Lage der Quadratklammern. Ccsid 37 hat [] bei Hex Ba und BB anstelle von Hex AD bzw. BD.
UTF-EBCDIC | ||||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | EIN | B | C | D | E | F | |
0x | Nul | Soh | Stx | ETX | St | Ht | SSA | Del | EPA | Ri | SS2 | Vt | Ff | Cr | ALSO | Si |
1x | Dle | DC1 | DC2 | DC3 | OSC | Lf | BS | ESA | KANN | Em | PU2 | SS3 | Fs | Gs | Rs | UNS |
2x | PAD | Hüpfen | BPH | NBH | Ind | Nel | ETB | ESC | HTS | Htj | VTS | PLD | Plu | Enq | Ack | Bel |
3x | DCS | PU1 | Syn | Sts | CCH | MW | SPA | Eot | SOS | SGCI | Sci | CSI | DC4 | Nak | PM | Sub |
4x | Sp | • | • | • | • | • | • | • | • | • | • | . | < | ( | + | | |
5x | & | • | • | • | • | • | • | • | • | • | ! | $ | * | ) | ; | ^ |
6x | - | / | • | • | • | • | • | • | • | • | • | , | % | _ | > | ? |
7x | • | • | • | • | 2 | 2 | 2 | 2 | 2 | ` | : | # | @ | ' | = | " |
8x | 2 | a | b | c | d | e | f | g | h | i | 2 | 2 | 2 | 2 | 2 | 2 |
9x | 2 | j | k | l | m | n | o | p | q | r | 2 | 2 | 2 | 2 | 2 | 2 |
Axt | 2 | ~ | s | t | u | v | w | x | y | z | 2 | 2 | 2 | [ | 2 | 2 |
BX | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | ] | 3 | 3 |
CX | { | A | B | C | D | E | F | G | H | I | 3 | 3 | 3 | 3 | 3 | 3 |
Dx | } | J | K | L | M | N | O | P | Q | R | 3 | 3 | 4 | 4 | 4 | 4 |
Ex | \ | 4 | S | T | U | V | W | X | Y | Z | 4 | 4 | 4 | 5 | 5 | |
Fx | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | APC |
Oracle Utfe
Oracle Utfe ist ein Unicode 3.0 UTF-8 Oracle -Datenbank Variation, ähnlich wie die CESU-8 Variante von UTF-8, wobei ergänzende Zeichen eher als zwei 4-Byte-Zeichen als als einzelner 4- oder 5-Byte-Zeichen codiert werden. Es wird nur auf EBCDIC -Plattformen verwendet.[2]
Vorteile:
- Nur Unicode -Zeichen für EBCDIC.
- Die Länge der SQL -Zeichentypen kann in Anzahl der Zeichen angegeben werden.
- Die binäre Reihenfolge der SQL -Zeichenspalten entspricht der binären Reihenfolge der SQL NCHAR -Spalten, wenn die Daten aus den gleichen ergänzenden Zeichen bestehen. Folglich sortieren diese Spalten für identische Zeichenfolgen gleich.[2]
Nachteile:
- Ergänzende Zeichen belegen nur sechs Bytes anstelle von vier Bytes. Folglich müssen ergänzende Zeichen konvertiert werden.
- UTFE ist keine Unicode -Standardcodierung. Clients, die UTF-8-Codierung benötigen, müssen Daten zum Abrufen und Speicher konvertieren.[2]
MKSH NEGA-UTF-8
Mksh ist eine POSIX-Shell mit einem „UTF8-Modus“, der die Portion zu EBCDIC kompliziert. Anstatt UTF-EBCDIC zu implementieren (was von niemandem verwendet wird), fanden es den Entwicklern einfacher, nur normale UTF-8 zu verwenden und es in Ebcdic zu konvertieren, indem sie so tun, als sei es die "erweiterte ASCII" -Kodierung für die aktuelle Code-Seite. Dies zerstört die eBCDIC -Kontrollzeichen, die jedoch nicht in ASCII zu finden sind.[3]
Siehe auch
Verweise
- ^ "UTR #16: UTF-EBCDIC". www.unicode.org. Abgerufen 2021-02-23.
Sie müssen in höchstens fünf Bytes suchen (sieben Bytes, wenn der gesamte Bereich von 31 Bit ISO/IEC 10646 nach hinten berücksichtigt wird)
- ^ a b c Baird, Cathy; Chiba, Dan; Chu, Winson; Fan, Jessica; Ho, Claire; Gesetz, Simon; Lee, Geoff; Linsley, Peter; Matsuda, Keni; Oscroft, Tamzin; Takeda, Shige; Tanaka, Linus; Tozawa, Makoto; Trute, Barry; Tsujimoto, Mayumi; Wu, Ying; Yau, Michael; Yu, tim; Wang, Chao; Wong, Simon; Zhang, Weiran; Zheng, Lei; Zhu, Yan; Moore, Valarie (2002) [1996]. "Anhang A: Gebietsschemasdaten". Oracle9i -Datenbank Globalisierung Support Guide (PDF) (Release 2 (9.2) ed.). Oracle Corporation. Oracle A96529-01. Archiviert (PDF) vom Original am 2017-02-14. Abgerufen 2017-02-14.
- ^ "Mirbsd/Mksh". GitHub. 4. November 2021.
EBCDIC interagiert auf besondere Weise mit UTF8-Mode: UTF-EBCDIC wird von niemandem verwendet, wir können UCS-2/4 in der Shell nicht verwenden Erledigt auf den Oktetten, die gemäß dem aktuellen Ebcdic -Codepage in "erweiterte ASCII" umgewandelt wurden.
Externe Links
- V.S. Umamaheswaran, Technischer Bericht von Unicode #16: Die Definition von UTF-EBCDIC (2002-04-16)