複製鏈接
請複製以下鏈接發送給好友

ISO/IEC 2022

鎖定
ISO/IEC 2022,由國際標準化組織(ISO)及國際電工委員會(IEC)聯合制定,是一個使用7位編碼表示漢語文字、日語文字或朝鮮文字的方法。
ISO 2022等同於歐洲標準組織(ECMA)的ECMA-35。中國國標GB 2312、日本工業規格JIS X 0202(舊稱JIS C 6228)及韓國工業規格KS X 1004(舊稱KS C 5620)均遵從ISO 2022。
中文名
ISO/IEC 2022
外文名
ISO/IEC 2022
別    名
ISO2022

ISO/IEC 2022引言

英語可用7位編碼儲存,而其他使用拉丁字母、希臘字母、西裏爾字母希伯來字母等的語文,由於只使用數十個字母,傳統上均使用8位編碼的ISO/IEC 8859標準來表示。但由於漢語、日語及朝鮮語字數眾多,無法用單一個8位字符來表達,故需要多於一個字節來代表一個字。於是,ISO 2022就設計出來讓漢語、日語及朝鮮語可以使用數個7位編碼的字符來示。
ISO 2022使用“逃逸字串”(Escape sequence)。逃逸字串由1個“ESC”字符(0x1B),再由兩至三個字串組成。此標記代表它後面的字符,屬於下表字符集的文字。 [1] 

ISO/IEC 2022主要內容

ISO 2022用於兼容當時的7比特寬的通信協議/通信設備。對於7比特寬的編碼空間,0x00-0x1F保留給控制字符,0x20-0x7F用來表示圖形字符(printing/"graphic" characters)。因此,在1個7比特的字符編碼空間,圖形字符總計為94個(由於空格符佔用了0x20碼位、Del符佔用了0x7F碼位)或者96個。對於雙字節的7比特編碼空間,圖形字符可以有94 x 94即8836個。對於三字節的7比特編碼空間,圖形字符可以有94×94×94即830584個(雖然沒有三字節字符集向ISO登記)。1970年代至1980年代,中文、日文、韓文的字符集漢字編碼數量基本上在這個範圍內。對於雙字節編碼的字符的每個code point,日文譯作區點,中文譯作碼位;area在中日文均譯作“區”,point在日文譯作“點”,在中文譯作“位”。因此,GB2312及其相關字符集國標,採用了“區位碼”。
ISO 2022規定字符集的控制字符可分為兩塊:C0,C1; 打印(圖形)字符分為四塊:G0,G1,G2,G3。對於7比特編碼, 字節值0x00-0x1F保留給C0控制字符塊;字節值0x20-0x7F用於G0, G1, G2, G3字符塊。對於單字節編碼的字符集,1個打印(圖形)字符塊可包含94個或96個字符;對於雙字節編碼的字符集,1個打印(圖形)字符塊可包含94 x 94個字符。使用控制符的轉義序列來表示在G0,G1,G2,G3之間的切換。
對於遵從ISO 2022的8比特編碼字符集,也是按照上述7比特編碼原則設計的編碼方案。這種8比特編碼字符集很容易兼容當時的7比特寬的通信協議/通信設備。8比特字符編碼時,0x00-0x1F表示C0或稱CL區(L是left縮寫,因為其在字符表的左側),0x80-0x9F表示C1或稱CR(R是Right縮寫,因為其在字符表的右側)。0x20-0x7F表示G0(稱GL區),0xA0-0xFF(稱GR區)可表示G1, G2, G3。
ISO-8859-X字符集是特定的把ISO-2022的若干成分組合起來的字符集。這些成分包括:
  • 低端控制字符(C0)
  • US-ASCII字符集(GL)
  • 高端控制字符(C1)
  • 高端字符(GR)是特定於每個ISO-8859-X變種。例如ISO-8859-1是由ISO-IR-1, ISO-IR-6, ISO-IR-77, ISO-IR-100 組成。
對於GB 2312,是8比特雙字節編碼。其漢字編碼空間為94 x 94,即有94個區,每個區有94個位(用來編碼字符)。實際使用了16-55區編碼一級漢字,56-87區編碼二級漢字。這些漢字均放在了G1字符塊區。這種區位碼方案是GB 2312的邏輯設計。其具體的字符編碼方案(Character Encoding Scheme):字節值在0x00-0x7F,為單字節表示一個字符,構成了C0、G0區,與ASCII碼兼容。因此,GB 2312是單、雙字節混合編碼。
GBK編碼作為簡體中文Windows操作系統的缺省的語言locale設置,GBK編碼雖然完全向後兼容GB 2312,但GBK突破了ISO 2022中GR區域的字數的94²=8,836個字的限制。GBK編碼的第一字節向 81–FE (126個選項,佔用了C1區) 、第二字節向 40–FE (191個選項,佔用了GL區、C1區) 進行擴展。隨後的GB 18030在完全兼容GBK的基礎上增加了4字節的編碼,如果第二字節的值在0x30-0x3F範圍,則隨後的兩個字節一起組成1個4字節編碼的字符。
CNS 11643-1992,至1992年作為雙字節編碼包含了7個字面、48,027字。其具體的字符編碼方案是採用控制字符轉義序列,在不同的字面之間切換。 [1] 

ISO/IEC 2022編碼結構

ISO/IEC 2022編碼在字符碼值與顯示的字符之間給出了兩層映射。轉義序列允許任何大的登記的圖形字符集指代於四個工作集之一:即G0到G3,以及更短的控制序列指出被使用"invoked"的工作集以解釋流中的字節。
7比特ASCII圖形字符的範圍(0x20–0x7F),是在自負編碼表的左側,稱作"GL"碼(表示"graphics left"),"高位ASCII"碼的範圍(0xA0–0xFF), 被稱作"GR"碼("graphics right")。
默認, GL碼指代G0字符, GR碼指代G1字符,但這可被控制碼或早先的協議修改:
縮寫.
名字
效果
0x0F
SI
LS0
Shift In
Locking shift zero
GL編碼G0從當前開始
0x0E
SO
LS1
Shift Out
Locking shift one
GL 編碼G1從當前開始
ESC 0x6E (n)
LS2
Locking shift two
GL 編碼G2從當前開始
ESC 0x6F (o)
LS3
Locking shift three
GL 編碼G3從當前開始
0x8E
ESC 0x4E (N) (N)
SS2
Single shift two
GL 編碼G2僅用於下一個字符
0x8F
ESC 0x4F (O) (O)
SS3
Single shift three
GL 編碼G3僅用於下一個字符
ESC 0x7E (~)
LS1R
Locking shift one right
GR 編碼G1從當前開始
ESC 0x7D (})
LS2R
Locking shift two right
GR 編碼G2從當前開始
ESC 0x7C (|)
LS3R
Locking shift three right
GR 編碼G3從當前開始
四個工作集的每個可表示94個字符或94n字符。此外,G1到G3可表示96或96n個字符。當後者被用在GL區域,空格字符與delete字符(碼值0x20與0x7F)不可用。
還有一些罕用的特性可切換控制字符集,這是單層查詢:the 0x00–0x1F範圍是C0控制字符集,0x80–0x9F範圍是C1控制字符集,轉義序列可以切換不同的選擇。要求任何C0字符集包含ESC字符出當前碼位0x1B。
在上述SS2與SS3例子中,C1控制字符集中的單個控制字符可被7比特編碼用於序列ESC 0x40 (@)到ESC 0x5F (_)。額外的控制功能可用於範圍ESC 0x60 (`)到ESC 0x7E (~)。
轉義序列指代字符集採取這樣的形式ESC I [I...] F, 其中有一個或多箇中間的I字節來自範圍0x20–0x2F, 一個最後的F字節來自0x40–0x7F。(範圍0x30–0x3F被保留用於私用F字節)。 I字節辨識字符集類型與被指代的工作集,F字節辨識字符集自身。 [1] 

ISO/IEC 2022表達方式

以ISO 2022標準來編碼的字集包括:
ISO-2022-JP - 日語文字
  • ESC B 轉為ASCII
  • ESC J 轉為JIS X 0201-1976
  • ESC $ @ 轉為JIS X 0208-1978
  • ESC $ B 轉為JIS X 0208-1983
ISO-2022-JP-1,於ISO-2022-JP的基礎上,加上以下一組逃逸字串
  • ESC $ D 轉為JIS X 0212-1990
ISO-2022-JP-2,於ISO-2022-JP-1的基礎上,加上以下四組逃逸字串,提供多語言支援
  • ESC $ A 轉為GB 2312-1980(簡體中文)
  • ESC $ C 轉為KS X 1001-1992(朝鮮文)
  • ESC . A 轉為ISO 8859-1(西歐拉丁字母)
  • ESC . F 轉為ISO 8859-7(希臘字母)
ISO-2022-JP-3,於ISO-2022-JP-3的基礎上,加上以下兩組逃逸字串
  • ESC $ O 轉為JIS X 0213-2000第一字面
  • ESC $ P 轉為JIS X 0213-2000第二字面
ISO-2022-JP-2004,於ISO-2022-JP-3的基礎上,加上以下一組逃逸字串
  • ESC $ Q 轉為JIS X 0213-2004第一字面
ISO-2022-KR - 朝鮮文
  • ESC $ C 轉為KS X 1001-1992
ISO-2022-CN - 中文
  • ESC $ A 轉為GB 2312-1980
  • ESC $ G 轉為CNS 11643-1992第一字面
  • ESC $ * H 轉為CNS 11643-1992第二字面
ISO-2022-CN-EXT - 於ISO-2022-CN的基礎上,加上以下六組逃逸字串
  • ESC $ E 轉為ISO-IR-165
  • ESC $ + I 轉為CNS 11643-1992第三字面
  • ESC $ + J 轉為CNS 11643-1992第四字面
  • ESC $ + K 轉為CNS 11643-1992第五字面
  • ESC $ + L 轉為CNS 11643-1992第六字面
  • ESC $ + M 轉為CNS 11643-1992第七字面 [1] 
參考資料
  • 1.    小林劍著,鄭褚璋譯.中日韓越信息處理.台北:美商歐萊禮股份有限公司,2002年