热门问题
时间线
聊天
视角

ISO/IEC 2022

来自维基百科,自由的百科全书

Remove ads

ISO 2022,全稱ISO/IEC 2022,由國際標準化組織(ISO)及國際電工委員會(IEC)聯合制定,是一個使用7或8位元編碼表示各種語言文字的通用技術規範。特別以東亞語言:漢語文字日語文字朝鮮文字的編碼方法著稱。

ISO 2022等同於歐洲標準組織(ECMA)ECMA-35中國國標GB 2312、日本工業規格JIS X 0202(舊稱JIS C 6228)及韓國工業規格KS X 1004(舊稱KS C 5620)均遵從ISO 2022。

引言

Thumb
Mozilla瀏覽器支援ISO 2022編碼

早期電腦的字元編碼基本上都是6位。所以早期電腦的整形的字長一般是6的倍數,如18位元、24位元、36位元等。1963年公布的ASCII碼是第一個得到廣泛採用的7位字元編碼。這時的通訊領域的協定採用了第8位元做校驗糾錯用途。但是,對於電腦主記憶體來說,校驗糾錯變得不是必要。因此8位元字元編碼逐漸出現,用來表示比ASCII碼更多的字元。為此,1971年公布的ECMA-35標準,用來規定各種7位或8位元字元編碼應當遵從的共同規則。隨後ECMA-35被採納為ISO 2022.

英語可用7位編碼儲存,而其他使用拉丁字母希臘字母西里爾字母希伯來字母等的語文,由於只使用數十個字母,傳統上均使用8位元編碼的ISO/IEC 8859標準來表示。但由於漢語、日語及韓語字數眾多,無法用單一個8位元字元來表達,故需要多於一個位元組來代表一個字。於是,ISO 2022就設計出來讓漢語、日語及韓語可以使用數個7位編碼的字元來示。

ISO 2022用來:

  • 在一種字元編碼下表示屬於多個字元集的字元;
  • 表示大字元集;
  • 相容7位元信道,即使是8位元編碼字元集。

ISO 2022使用「跳脫符串」(Escape sequence)指出隨後的字元屬於哪個字元集。這些字元集在ISO登記,並遵循ISO 2022標準規定的模式。跳脫符串由1個「ESC」字元(0x1B),再由兩至三個字串組成。此標記代表它後面的字元,屬於下表字元集的文字。對於一個字元集,如果上下文可以判明是哪種字元集,也可以不通過跳脫序列來明確指出是哪種字元集。實際上,ISO-8859-1就宣布不需要定義它的跳脫序列。

Remove ads

ISO 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字。其具體的字元編碼方案是採用控制字元跳脫序列,在不同的字面之間切換。

Remove ads

編碼結構

ISO/IEC 2022編碼在字元碼值與顯示的字元之間給出了兩層對映。跳脫序列允許任何大的登記的圖形字元集指代於四個工作集之一:即G0到G3,以及更短的控制序列指出被使用"invoked"的工作集以解釋流中的位元組。

7位元ASCII圖形字元的範圍(0x20–0x7F),是在字元編碼表的左側,稱作"GL"碼(表示"graphics left"),"高位ASCII"碼的範圍(0xA0–0xFF), 被稱作"GR"碼("graphics right")。

預設, GL碼指代G0字元, GR碼指代G1字元,但這可被控制碼或早先的協定修改:

更多資訊 碼, 縮寫. ...

四個工作集的每個可表示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位元組辨識字元集自身。

更多資訊 碼值, 十六進制 ...

F位元組的登記對於不同類型的字元集是獨立的。使用ESC ( AESC + A指派的94個字元的圖形字元集不相關於使用ESC - AESC / A指派的96個字元的圖形字元集。二者也不相干於使用ESC $ ( AESC $ + A指派的94n個字元的字元集,等等。

C0與C1控制字元集也是獨立的。C0控制字元集用ESC ! A指代,與用ESC " A指代的控制字元集C1無關。

此外,I位元組可增加到F位元組前面以擴充F位元組範圍。這僅用於94個字元的字元集,它的碼的形式已經使用了ESC ( ! F

Remove ads

遵從ISO 2022的字元集

以ISO 2022標準來編碼的字集包括:

  • ISO-2022-JP - 日語文字
  • 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的基礎上,加上以下兩組逃逸字串
    • 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-CN - 中文
  • 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第七字面
Remove ads

參看

參考文獻

  • 小林劍,(1999年). CJKV Information Processing. First Edition. O'Reilly and Associates, Inc. ISBN 1-56592-224-7;中文版,鄭褚璋譯,(2002年)中日韓越資訊處理 第一版,台北市,美商歐萊禮股份有限公司。 ISBN 986-7794-03-6

外部連結

Remove ads
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads