Bear's House
資訊科技

認識中文字元碼

 
 

首  頁

資訊科技

教育學習

有感而發

相關鏈結

批評指教

 

 

四、多位元組內碼編碼

  為了使UNIX家族的作業系統能夠具備支援多國語文的能力,USL在日本的分公司“UNIX System Laboratories Pacific, Ltd.”特別於1990年公佈了多國語文環境MNLS(Multi-National Language Supplement)。MNLS允許UNIX除了系統預設的ASCII之外,可另外支援三個單或多位元組編碼的字元集。EUC(Extended UNIX Code)就是MNLS所採用的的編碼結構。

  EUC只是編碼結構,其字元集由各地區的電腦業者或協會自行定義。EUC的編碼格式如圖4-1所示,包括四組編碼集(code set):

  1. 編碼集0(EUC-0):單位元組字元碼,b8必須設為“0”,原則上直接採用ASCII。

  2. 編碼集1(EUC-1):多位元組字元碼,每個位元組的b8必須都設為“1”。

  3. 編碼集2(EUC-2):多位元組字元碼,每個位元組的b8必須都設為“1”,並且必須加上識別用的前導位元組SS2(single-shift character 2)。

  4. 編碼集3(EUC-3):多位元組字元碼,每個位元組的b8必須都設為“1”,並且必須加上識別用的前導位元組SS3(single-shift character 3)。

  圖4-1中,“x”代表該位元的值可為“0”或“1”。方括符代表所包夾位元串可重複零或多次。控制符SS2和SS3只對緊隨其後的一個字元碼有效;MNLS沿用ISO/IEC 2022所規定的八位元環境單一移位調用控制符,將SS2設定為單位元組碼8Eh,將SS3設定為單位元組碼8Fh。

編碼集

編碼格式

EUC-0

0xxxxxxx

EUC-1

1xxxxxxx [ 1xxxxxxx […] ]

EUC-2

SS2 1xxxxxxx [ 1xxxxxxx […] ]

EUC-3

SS3 1xxxxxxx [ 1xxxxxxx […] ]

圖4-1 EUC的編碼格式

  從圖4-1中EUC四個編碼集的設計可以感受到MNLS受到ISO/IEC 2022編碼架構相當大的影響:

  1. EUC-0、EUC-1、EUC-2和EUC-3可依序分別對應ISO/IEC 2022的四個備用字元集G0、G1、G2和G3(參見圖3-2)。

  2. EUC-2和EUC-3的識別用前導位元組分別選用了G2與G3的單一移位調用控制符SS2及SS3。

  ISO/IEC 2022可說是“Doing everything always do nothing!”的具體例證:想設計一套『全球通吃』的編碼架構,結果卻是系統複雜到讓開發工作變成『不可能的任務』。對非英語系國家而言,開發作業系統和應用系統只要能兼顧當地語文和ASCII就可滿足市場和使用者的需求了,例如台灣的Big5碼配ASCII、中國大陸的GB內碼配ASCII、日本的JIS內碼配ASCII等。發展兼顧多國甚至全世界各國交換碼的作業系統和應用程式不僅不符合市場需求而且技術上極度困難到有如一場惡夢。

  為了落實開發多國語言作業系統和應用程式的構想,MNLS大幅度降低了ISO/IEC 2022的複雜度:

  1. 揚棄ISO/IEC 2022一個現用字元集、四個備用字元集和龐大字元集庫(可收容成百上千種字元集和碼)的複雜三層組織,代以簡單明瞭至多四個字元集的扁平組織。

  2. EUC-0、EUC-1、EUC-2和EUC-3可同時並存,無須使用逸出順序將字元集從字元集庫載入備用字元集區。

  3. 直接利用標籤位元或標籤位元組識別EUC-0、EUC-1、EUC-2和EUC-3,無須使用調用控制符切換四個EUC編碼集之一成為現用字元集。【註:標籤位元和標籤位元組請詳見第七章。】

  當多個編碼集混用時,EUC顯然非定長碼,針對這一點,MNLS另外規定了對應於四個編碼集的內部表達方式。圖4-2所示為EUC的16位元內碼格式,而圖4-3所示為EUC的32位元內碼格式。兩圖中的“x”、“y”和“z”分別代表各位元組的位元,其值可為“0”或“1”。

EUC編碼格式

EUC 16位元內碼格式

EUC-0

0xxxxxxx

EUC16-0

000000000xxxxxxx

EUC-1

1xxxxxxx
1xxxxxxx 1yyyyyyy

EUC16-1

100000001xxxxxxx
1xxxxxxx1yyyyyyy

EUC-2

SS2 1xxxxxxx
SS2 1xxxxxxx 1yyyyyyy

EUC16-2

000000001xxxxxxx
0xxxxxxx1yyyyyyy

EUC-3

SS3 1xxxxxxx
SS3 1xxxxxxx 1yyyyyyy

EUC16-3

100000000xxxxxxx
1xxxxxxx0yyyyyyy

圖4-2 EUC的16位元內碼格式

EUC編碼格式

EUC 32位元內碼格式

EUC-0

0xxxxxxx

EUC32-0

0000000000000000000000000xxxxxxx

EUC-1

1xxxxxxx
1xxxxxxx 1yyyyyyy
1xxxxxxx 1yyyyyyy 1zzzzzzz

EUC32-1

0011000000000000000000000xxxxxxx
001100000000000000xxxxxxxyyyyyyy
00110000000xxxxxxxyyyyyyyzzzzzzz

EUC-2

SS2 1xxxxxxx
SS2 1xxxxxxx 1yyyyyyy
SS2 1xxxxxxx 1yyyyyyy 1zzzzzzz

EUC32-2

0001000000000000000000000xxxxxxx
000100000000000000xxxxxxxyyyyyyy
00010000000xxxxxxxyyyyyyyzzzzzzz

EUC-3

SS3 1xxxxxxx
SS3 1xxxxxxx 1yyyyyyy
SS3 1xxxxxxx 1yyyyyyy 1zzzzzzz

EUC32-3

0010000000000000000000000xxxxxxx
001000000000000000xxxxxxxyyyyyyy
00100000000xxxxxxxyyyyyyyzzzzzzz

圖4-3 EUC的32位元內碼格式

上一章  返回目錄  下一章