張廣慶,黃裔華,顧婉晴
(1.青島市標準化研究院,青島 266071;2.廣東省薄膜及設備行業協會,廣州 511363;3.遼寧工業大學,錦州 121001)
編碼在生產、生活中有著廣泛應用。從一個簡單的單位員工編碼到龐大復雜的大飛機物料編碼,從常見的計算機漢字編碼到農產品和食品的追溯編碼,編碼都起著非常重要的作用。在眾多的編碼中,如何選擇適合個人或單位實際應用的編碼方案呢?已公布的國家標準和行業標準中,有大量涉及編碼的標準,本文通過簡要分析此類標準,幫助讀者更好的借鑒、學習這些編碼知識,從而找到最佳解決方案。
編碼是一個多學科經常使用的概念,全國科學技術名詞審定委員會公布的不同學科的定義有20種。在計算機科學中,編碼是指信息從一種形式或格式轉換成另一種形式的過程。在標準中,編碼是給事物或概念賦予代碼的過程,代碼表示特定事物或概念的一個或一組字符[1]。
據統計,國內已發布的國家標準和行業標準約有22萬種,在標準名稱和適用范圍中檢索“編碼”一詞,可以找到大多數的編碼類標準,類似的詞還有代碼、分類、報文。利用這一特性,在某專業標準網站檢索這些詞后的統計情況參見表1。

表1 編碼類標準數量
編碼對象指被編碼的事物或概念,通常具有某種共同屬性或特征。[1]編碼對象泛指人類社會傳播的一切內容,可以是文字、聲音、信號、產品、圖形圖案、標志標識等。在現行的450種編碼類國家標準中,最多的標準是關于語言字符集編碼的,多達135種。
編碼對象可分為文字對象和非文字對象。事物名稱是最常見的文字對象,像某個漢字、某單位名、某道路名、某書名等都是文字對象。非文字對象則包括圖形、圖像、聲音等,如電報中的電脈沖信號和商品中的條形碼符號就是非文字對象。
國際標準分類法(ICS)和中國標準文獻分類法(CCS)是標準文獻的分類方法,在研究標準中的編碼對象分類時,也可以借鑒使用這兩種分類方式。
(1)文字符號:又分為數字型、字母型、字母數字型。數字型的代碼只能是數字,如行政區劃代碼、商品條碼;字母型的代碼只能是字母,如世界各國和地區代碼中的兩字符、三字符代碼;字母數字型的代碼既有數字也有字母,如統一社會信用代碼和國民經濟行業代碼。
采用文字符號的編碼對象在本文中簡稱編碼代碼。編碼代碼也包括編碼對象采用的圖形符號對應的數字和字母,這些數字和字母可以供人識讀,像一維條碼常常將條形碼和數字、字母同時印刷,以便同時滿足設備識別和人工識讀的需要。
大多數小型機和全部個人計算機都使用ASCII碼作為存儲和傳輸的數據格式,因此,文字符號也多采用ASCII碼作為編碼符號。基本ASCII碼共有128個字符,由10個數字、52個英文字母、33個其它可顯示字符、33個控制字符或通信字符組成,擴充ASCII碼則可達到256個字符。
(2)圖形符號:使用圖形的編碼符號主要用于快速采集和識別,一般使用規則的圖形符號。如一維條碼使用寬度不等的多個黑線和空白表達特定信息,二維條碼使用特定的幾何圖形(如黑白相間的方格)按一定規律在平面上進行規則分布來表達信息[2]。GB/T 12905-2000 《條碼術語》規定的條碼符號類型包括一維條碼、二維條碼和特種條碼,前兩者較為常用(見表2)。

表2 常用條碼
(1)非坐標型排列:使用文字符號的編碼是非坐標型排列,一般用于計算機存儲、傳輸和處理。使用數字或字母編制代碼,與空間坐標無關。
(2)線型排列:使用特定的幾何圖形在一個方向上按照一定規則排列,如一維條碼使用黑條和空白相間的符號按照水平或垂直排列表達信息。圓形條碼則是一種特殊的線型編碼,是從一個中心點向外延伸的規則圖形。
(3)平面型排列:使用特定的幾何圖形在平面上排列表達信息,一般選擇垂直的兩個方向,如二維條碼由黑色和白色正方形組成并沿兩個方向排列。
(1)隨機結構:編碼代碼由無含義字符或者某種語言的縮略詞組成,如組織機構代碼前8位由無任何含義的數字和字母組成,世界各國和地區代碼由2位(或3位)拉丁字母或3位數字組成。
(2)分級結構:編碼代碼可以劃分成有不同含義的各段代碼,且后一段代碼的確切含義由前一段代碼來確定。如行政區劃代碼是6位數字,由3段分別表示省、市(地區)、縣(區)的代碼組成;國民經濟行業代碼是5位數字或字母,分別由門類、大類、中類、小類組成。
(3)并列結構:編碼代碼由有不同含義的各段代碼組成,各段代碼的屬性或特征獨立,與前后位置無關。如居民身份證號第1-14位是14位數字,分別是行政區劃代碼、出生年月日;統一社會信用代碼是18位數字或字母,第3-17位分別是登記機關行政區劃代碼、組織機構代碼,都屬于并列結構。
(4)混合結構:編碼代碼由上述2種或3種結構的代碼共同組成。大多數編碼代碼是混合結構,如居民身份證號。
不同編碼結構示例見表3。

表3 采用不同編碼結構的代碼示例
大多數編碼代碼采用一套校驗字符系統來防止復制、鍵入或采集編碼數據時產生錯誤,其代碼通常由本體碼和校驗碼組成。為與標準中描述校驗算法的用語一致,下文中的“編碼代碼”與“字符”含義相同。
常用的校驗算法有奇偶校驗、海明校驗、循環冗余校驗、縱向冗余校驗、累加和校驗、加總異或校驗等。
在標準中,編碼代碼通常采用模數同余算法的校驗字符系統,一般有兩種:一種是純系統,所有計算階段都使用單一模數;另一種是混合系統,在計算中采用了兩個模數,一個模數為偶數,另一個模數比它大1。[3]模數同余算法中的常用模數參見表4。

表4 常用模數
純系統采用遞歸法和多項式法計算校驗碼,而混合系統僅能使用遞歸法計算校驗碼,不能采用多項式法。



表5 純系統1位校驗碼的常規計算

示例:計算代碼“0794”的1位校驗碼。計算步驟參見表6。

表6 純系統1位校驗碼的遞歸法計算

表7 純系統前15位的權
示例:計算代碼“0794”的1位校驗碼。計算步驟參見表8:

表8 純系統1位校驗碼的多項式法計算
關于一維條碼的相關標準均采用純系統多項式法計算或驗證校驗碼。




表9 混合系統1位校驗碼的遞歸法計算
編碼及其技術廣泛存在于編碼類標準中,大多數生產、生活中遇到的事物和概念都可以在標準中找到相應規范。學習、借鑒這些標準,可以有效解決各種編碼問題。校驗技術是編碼技術的重要組成部分,采用ASCII碼作為代碼的編碼都使用模數同余算法的校驗字符系統,如日常生活中常遇到的身份證號、統一社會信用代碼、商品條碼等大都使用模數同余算法。
[1] GB/T 10113-2003,分類與編碼通用術語[S].
[2] GB/T 12905-2000,條碼術語[S].
[3] GB/T 17710-2008,信息技術 安全技術 校驗字符系統[S].