吳迪
摘要:漢字編碼相關的知識點在湖北省計算機類技能高考的技能考試中是一個必考的難點。本文從相關概念出發,研究并總結了相關的考點知識。
關鍵詞:漢字編碼;計算機技能高考
在湖北省計算機類技能高考的技能考試中,“計算機字符編碼”作為一個重要知識點,是每年都會出現的必考題。而作為“計算機字符編碼”的重點,“漢字編碼”由于其概念繁雜,運算復雜而讓不少學生望之生畏。對此,本文將針對這一專題進行整理和探討。
一、概念梳理
1、“漢字編碼”的概念
計算機中漢字的表示也是用二進制編碼,漢字編碼(Chinese character encoding)是為漢字設計的一種便于輸入計算機的代碼。ASCII碼只對英文字母、數字和標點符號進行了編碼,漢字在計算機中的表示形式統稱為漢字編碼。
2、“漢字編碼”的分類
漢字信息處理系統一般包括編碼、輸入、存儲、編輯、輸出和傳輸。針對這些問題,我們一般將漢字編碼分為四大類:漢字輸入碼、漢字交換碼、漢字內碼和漢字字形碼。
(1)漢字輸入碼
輸入碼也叫外碼,是用來將漢字輸入到計算機中的一組鍵盤符號。常用的輸入碼有拼音碼、五筆字型碼、自然碼和電報碼等。
(2)漢字交換碼
①“國標碼”的概念
計算機內部處理的信息是用二進制代碼表示的,但二進制代碼使用起來不方便,于是需要采用信息交換碼。其中的漢字代碼需要符合國家規定的交換碼標準,這個標準指的是中國標準總局1981年制定了中華人民共和國國家標準GB2312--80《信息交換用漢字編碼字符集--基本集》,也就是所謂的“國標碼”。
②“區位碼”概述
區位碼是國標碼的另一種表現形式。它把國標GB2312--80中的漢字、圖形符號組成一個94×94的方陣,分為94個“區”,每區包含94個“位”,其中“區”的序號由01至94,“位”的序號也是從01至94。94個區中位置總數=94×94=8836個,其中7445個漢字和圖形字符中的每一個字符占一個位置,還剩下1391個空位保留備用。
(3)漢字內碼
當計算機輸入外部碼時,一般都要轉換成內部碼才能進行處理和存儲。內部碼是漢字最基本的編碼,通常用其漢字字庫中的物理位置表示。它可以是漢字在字庫中的序號或者是漢字在字庫中的存儲位置,每個字的內碼是唯一的。
(4)漢字字形碼
字形碼是漢字的輸出碼,又名字模。輸出漢字時都采用圖形方式,無論漢字的筆畫多少,每個漢字都可以寫在同樣大小的方塊中。漢字字形是指原來鉛字排版漢字的大小和形狀,在計算機中指組成漢字的點陣。漢字點陣和字形的對應關系是:有筆畫處的點為1,無筆畫處的點為0。漢字的點陣越多,打印字體越美觀。
二、計算問題
1、“漢字編碼”占用的存儲字節
漢字編碼是用兩個擴展的ASCII碼兩兩組合起來的,一個擴展的ASCII碼是一個字節,所以漢字編碼是兩個字節。當題目涉及到存儲字節時,這里的漢字編碼已涉及到在計算機中內部的表示,即漢字的內碼。為了區分,人們將組成漢字編碼的兩個字節的最高位都改為1,由此可把漢字編碼與擴展的ASCII碼區別開來。
故此,做這類題應依照以下結論解答:微機中采用的ASCII編碼表示一個英文字符,采用漢字國標碼表示一個漢字,存儲一個漢字的內碼所需的字節數是兩個字節,每個字節的最高二進制位的值分別為1,1。
2、“內碼”與“交換碼”間的運算
(1)進制問題
由于功用不同,各種內碼的原始進制并不一致。如果要進行運算,先要統一進制問題。
區位碼:4位10進制數(區碼+位碼)
國標碼:4位16進制數,(雙字節編碼,每個字節最高位為0)
機內碼:4位16進制數,(雙字節編碼,每個字節最高位為1)
(2)轉換方法
①區位碼轉為國標碼
國標碼是由區位碼中表示漢字代碼的區號和位號各加32得到的(十進制規則)
轉換公式為:國標碼D=區位碼D+3232D(國標碼H=區位碼H+2020H)
②國標碼轉為機內碼
漢字的國標碼和內碼有—一對應關系,即將高位加l,國標碼就變為內碼。故機內碼的計算方式就是將國標碼的兩個字節的最高位由0變成1,其余7位不變(二進制規則)。計算最高位的變換,27=128(十進制規則),轉成十六進制數為80(十六進制)
轉換公式為:機內碼H=國標碼H+8080H
如果轉換對象換成區位碼則有:
機內碼H=國標碼H+8080H=(區位碼H+2020H)+8080H=區位碼H+A0A0H
(3)有效范圍的求法(判斷某編碼是否表示漢字)
①區位碼值的有效范圍
區位碼中94行94列二維代碼表示漢字,故其范圍為0101~9494(十進制)
計算時需要將區碼和位碼分開,分別轉換為十六進制數。而01D=01H,94D=5EH,故有0101~5E5E(十六進制)
②國標碼和機內碼值的有效范圍
根據國標碼H=區位碼H+2020H,得到國標碼的有效范圍為2121~7E7E(十六進制)
根據機內碼H=區位碼H+A0A0H,得到機內碼的有效范圍為A1A1~FEFE(十六進制)
3、“字形碼”的運算
在顯示或打印漢字時,還涉及到字形碼。把一個方塊看成m行n列矩陣,共有m×n個點,稱為漢字點陣,一個點用一個二進制位表示。漢字的點陣可以對應若干字節長的字形碼,這種表示漢字點陣的方法稱為漢字字形的數字化表示法。
我們通常用16×16點陣來顯示漢字,一個16×16點陣的字形碼需要16×16=1024bit ,由于1B=8b,故將結果除以8,得到32 Byte存儲空間。
故在m×n點陣字庫中,每個漢字的字形碼所占字節的計算公式為:m×n / 8 (字節)
參考文獻:
[1]中國漢字編碼研究會.漢字編碼方案匯編[M].北京:科技文獻出版社,1980,3.