GB 18030
# GB 18030

Der chinesische Zeichenkodierungsstandard GB18030 ist eine Kodierung sämtlicher Unicode-Zeichen – derzeit 128.172 –, darunter die aktuell in Unicode 7.0 kodierten 75.963 Han-Zeichen, das sind chinesische Schriftzeichen und ihre Varianten in Japan, Korea und Vietnam. Seit dem 1. September 2001 ist er verbindlich für alle in der Volksrepublik China verkauften Betriebssysteme und Programme; es ist der Nachfolgestandard für die Kodierungen GBK und GB2312 und deckt traditionelle und vereinfachte Zeichen ab. Der offizielle Name ist GB18030-2000 und enthält GB für Guojia Biaozhun (國家標準 / 国家标准), was nationaler Standard bedeutet. Veröffentlicht wurde der Standard am 17. März 2000, ein Update erschien am 21. November 2000.

GB18030 kann als das chinesische Äquivalent zu UTF-8 angesehen werden, weil es die Codepunkte für den gesamten Unicodebereich enthält, auch für heute noch nicht zugewiesene Codepoints. Ähnlich wie UTF-8 ist es eine zu ASCII abwärtskompatible Kodierung, die über eine Million Codepunkte zusätzlich repräsentiert (im 4-Byte-Bereich von Unicode). Im Unterschied zu UTF-8 jedoch erhält GB18030 die Kompatibilität mit GBK und GB2312; ein Teil der Zuordnungstabelle wurde direkt von GBK übernommen, der Rest algorithmisch ermittelt. Zusätzlich schließt GB18030 auch die Zeichen aus dem taiwanischen Big5 ein.

Die meisten (westlichen) Computersysteme hatten bereits eine Variante von Unicode standardisiert, als GB18030 erschien. Die dabei vorgenommene technische Vereinfachung, Unicode als fixe Einheiten mit 16-bit Länge UCS-2 zu behandeln, konnte nach seinem Erscheinen nicht mehr fortgeführt werden. Betriebssystemhersteller und Programmierer wurden sozusagen durch eine „volksrepublikanische Verfügung“ gezwungen, entweder variable Formate wie UTF-8 oder UTF-16 zu verwenden, oder aber größere Formate fixer Breite, wie UCS-4 oder UTF-32. Mit Windows 2000 nahm Microsoft diesen Schritt vor, Linux hatte dies bereits vor der Einführung von GB18030 unterstützt.

Die GB18030-kodierte Computerschrift SimSun (Founder Extended) stellte im Jahr 2000 Glyphen, also konkrete Zeichendarstellungen, für den gesamten Zeichenvorrat des damaligen Unicode 3.0 zu Bildschirmanzeige und Ausdrucken zur Verfügung, d. h. bereits einschließlich des Unicodeblocks „Vereinheitlichte CJK-Ideogramme, Erweiterung A“ sowie im Vorgriff auch einschließlich der „Erweiterung B“ aus Unicode 3.1, das erst im März des Folgejahrs 2001 publiziert wurde. Weitere bekannte Zeichensätze mit früher Unterstützung der „Erweiterung A“ sind SimSun 18030 und Code2000.

## Aufbau der Zeichen

Sequenzen aus einem Byte entsprechen ASCII und reichen von $00_{hex}$ bis $7F_{hex}.$ Sequenzen aus 2 Byte entsprechen GB2312 und bestehen aus einem Start-Byte aus dem Bereich $81_{hex}$ … $FE_{hex},$ gefolgt von einem Byte aus dem Bereich $40_{hex}$ … $FE_{hex}.$ Sequenzen aus 4 Byte bilden die bis hierhin unberücksichtigten Unicode-Zeichen ab. Das erste und dritte Byte ist aus dem Bereich $81_{hex}$ … $FE_{hex},$ das zweite und vierte Byte aus $30_{hex}$ … $39_{hex}.$ Im Gegensatz zu UTF-8 kann man also bei einem Oktett im Bereich $30_{hex}$ … $7F_{hex}$ nicht davon ausgehen, dass es für ein ASCII-Zeichen ist, sondern dieser Bytewert kann in Abhängigkeit von seiner Position verschiedene Bedeutung haben.

| Code | …0 | …1 | …2 | …3 | …4 | …5 | …6 | …7 | …8 | …9 | …A | …B | …C | …D | …E | …F |
| - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| 0… | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI |
| 1… | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
| 2… | SP | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
| 3… | ASCII oder zweites oder viertes Byte einer 4 Byte langen Sequenz. | ASCII oder zweites oder viertes Byte einer 4 Byte langen Sequenz. | ASCII oder zweites oder viertes Byte einer 4 Byte langen Sequenz. | ASCII oder zweites oder viertes Byte einer 4 Byte langen Sequenz. | ASCII oder zweites oder viertes Byte einer 4 Byte langen Sequenz. | ASCII oder zweites oder viertes Byte einer 4 Byte langen Sequenz. | ASCII oder zweites oder viertes Byte einer 4 Byte langen Sequenz. | ASCII oder zweites oder viertes Byte einer 4 Byte langen Sequenz. | ASCII oder zweites oder viertes Byte einer 4 Byte langen Sequenz. | ASCII oder zweites oder viertes Byte einer 4 Byte langen Sequenz. | : | ; | < | = | > | ? |
| 4… | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. |
| 5… | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. |
| 6… | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. | ASCII oder zweites Byte einer 2 Byte langen Sequenz. |
| 7… | | | | | | | | | | | | | | | | DEL |
| 8… | | | | | | | | | | | | | | | | |
| 9… | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. |
| A… | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. |
| B… | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. |
| C… | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. |
| D… | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. |
| E… | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. | Erstes oder drittes Byte einer 4 Byte langen Sequenz oder erstes oder zweites Byte einer 2 Byte langen Sequenz. |
| F… | | | | | | | | | | | | | | | | |
| | …0 | …1 | …2 | …3 | …4 | …5 | …6 | …7 | …8 | …9 | …A | …B | …C | …D | …E | …F |
