Bear's House |
認識中文字元碼 |
|
一、字元與編碼(一)何謂字元字元(character)是人類語文的最基本單位,例如:中文字、英文字母、阿拉伯數字、標點符號等。而字元集(character set)則是指某種語文的全部字元(例如:英文的字元)或部份字元(例如:中文的字元)所形成的集合。 字元也是電腦輸入、儲存、列印、顯示和處理文數字資訊的基本單位。任何電腦都必須具備內建的字元集,才能和人類溝通以及處理文數字資訊。電腦所使用的字元,可區分為圖形字元和控制字元兩類:
(二)何謂編碼就微觀角度而言,電腦的硬體是由數以億計、極為微小(寬度甚至還不到十萬分之一公分)的電晶體開關所建構成的。這些開關只能有「開(on)」和「關(off)」兩種狀態,習慣上分別以“1”和“0”來表示,因此電腦內部可以看做是二進制數字的世界。換言之,在電腦系統內部,不論是用以組成程式的指令或任何形式的資料(包括:文字、圖形、影像、聲音、動畫等),全都是以二進制形式表現(驅使電晶體開關開或關)的電磁信號。 由於硬體的限制,所有字元都必須先轉換成二進制數字才能被電腦所接受和處理。這種二進制數字又稱為二進碼(binary code)。二進碼的任何一個數位(digit),因其值必須是“1”或“0”,所以被稱做位元(bit,為“binary digit”取第一個字母和最後兩個字母所組成的新英文單字)。針對特定的字元集,分別賦予每個字元一個對應的二進碼,稱為編碼。而對應於個別字元的二進碼則稱為字元碼(character code)。為了減少字元碼的書寫位數,習慣上將字元碼從二進制數字轉換成等值的十進制數字或十六進制數字。【註:十六進制每個數位的值為0至15,其中10到15以大寫字母A至F表示之;在本文中,於數字之後附加h表示十六進制。】 字元編碼可大致分成下列四個步驟:
請注意,上述的步驟2和步驟3只是原則而已。事實上,字元碼長度的選定和逐字元給碼,都必須遵守既定的標準或規範,下文中將進一步說明。
(三)位元組的演變早期電腦的主記憶體使用磁蕊記憶器,存取速度慢、價格昂貴而記憶容量小,因此設法減少原始程式和文數字資訊所佔用的記憶空間便成為當務之急。解決方法之一是︰將電腦所用的字元集簡化到只用26個大寫英文字母、10個阿拉伯數字,以及少數必要的標點符號和控制字元。如此一來,只需六個位元(共計64個 碼位)就足以因應編碼所需。換言之,在早期的電腦系統裡,一個位元組為六個位元。眾所周知的程式語言FORTRAN IV只准許使用大寫英文字母、阿拉伯數字和很少的幾個標點符號來編寫程式,就是這時期所流傳下來的。雖然以六個位元為一個位元組幾乎是當時電腦廠商的共識,而且彼此的字元集內容也很相近,但字元的編碼卻並不一致。可以說,在1950∼60年代,美國的電腦業界可說是萬「碼」奔騰、百家爭鳴。 從1950年代中期起,隨著第一代商用電腦的日趨普及,美國圖書館界開始使用電腦來印製書目卡片,不久線上書目查詢系統也接著登場。為了降低編目作業的成本,避免重複編目,各圖書館開始提出共享書目的需求。但彼此使用不同的字元碼,卻妨礙了圖書館自動化業務的發展。1960年代初期,為解決書目資料交換的問題,美國國會圖書館(LC, Library of Congress)的Henriette Avram等人開始研擬機讀編目格式 (machine-readable cataloging),同時James Agenboard等人也制訂了英文的字元集和交換碼,以做為美國圖書館界書目交換的共同標準。LC所編訂的字元集增加了小寫英文字母、收容了更多的標點符號和控制字元,因此六個位元變得不敷編碼所需。很自然的,一個位元組就由原先的六個位元增加為七個位元(共計128個 碼位)。LC所制定的交換碼隨後成為美國的國家標準ASCII,並進而變成國際標準ISO/IEC 646。【註:ISO為國際標準組織(International Organization for Standardization)的縮寫,IEC則為國際電氣技術委員會(International Electrotechnical Commission)的縮寫,至於“ISO/IEC”則表示該標準係由兩機構共組的各個聯合技術委員會所通過發佈的。】 ASCII原為交換碼,只是設計來做為各電腦之間,或是電腦與周邊設備之間,交換文數字資訊用的字元碼。但由於ASCII方便易用,加上半導體記憶體逐漸取代了磁蕊記憶體,使得電腦主記憶體的容量大增而價格急速下降,電腦廠商於是開始直接把ASCII當內碼,用以表達電腦內部的文數字資訊。雖然ASCII只有七個位元,但電腦廠商為了提升資料傳送時的可靠度,往往附加一個同位檢測用的位元,使得一個位元組雖然名義上是七個位元,但實質上卻是八個位元。1980年代以後,隨著微處理器技術的快速發展和工作站、個人電腦(PC)的日趨風行,因著微處理器是以8、16、32甚或64個位元為一個運算處理單位,使得一個位元組等於八個位元逐漸成為大家的共識。總而言之,以八個位元為一個位元組並非理當如此,而是有其歷史背景的。
|