(本文章擷取於 Andy 的條碼世界)
UPC碼全名為Universal Product Code(統一商品條碼),普遍使用於
美洲一帶,UPC碼算是EAN碼的前身,因此兩者有著類似的特性及編
碼方式,只有0~9數字字元而已.
UPC碼分成標準型UPC-A碼及簡易型UPC-E碼,我們以較容易記
得的方式來做一比較 : UPC-A碼與EAN-13碼同為13個數字,UPC-E碼
與EAN-8碼同為8個數字.雖然長度相同,但其意義卻不盡相同,以下分
別介紹其編碼方式.
首先說明UPC及EAN碼每一字元的編碼原則,如下圖所示.
每一字元由2條Space及2條Bar所組合而成,而又細分成7等分,因
此能組合不同粗細比例的線條字元,這就是UPC及EAN碼字元編碼的
基礎.如圖的上方組合成0101111,為A
Type編碼方式的數字"6",圖的下
方組合成1010000,為C Type編碼方式的數字"6",兩者雖同是"6",但編碼
的型態卻不同,接下來介紹編碼型態的差異.
UPC三種編碼型態如下:
UPC-A條碼基本架構如下:
左邊線:固定為101
旗碼:佔2個字元,第一個字元固定為0,通常不列印出來,第二個字
元代表商品種類.
廠商代碼:佔5個字元,須提出申請.
中線:固定為01010
商品代碼:佔5個字元,由廠商自行訂定.
檢查碼:佔1個字元.
右邊線:固定為101,與左邊線相同.
UPC-A編碼方式
中線左邊,即旗碼及廠商代碼,採用A Type編碼方式
例如圖一.
旗碼第二個字元"0",即為A
Type編碼0001101
廠商代碼第一個字元"1",即為A
Type編碼0011001
廠商代碼第二個字元"2",即為A
Type編碼0010011
廠商代碼第三個字元"3",即為A
Type編碼0111101
廠商代碼第四個字元"4",即為A
Type編碼0100011
廠商代碼第五個字元"5",即為A
Type編碼0110001
中線右邊,即商品代碼及檢查碼,採用C Type編碼方式
例如圖一.
商品代碼第一個字元"6",即為C
Type編碼1010000
商品代碼第二個字元"7",即為C
Type編碼1000100
商品代碼第一個字元"8",即為C
Type編碼1001000
商品代碼第一個字元"9",即為C
Type編碼1110100
商品代碼第一個字元"0",即為C
Type編碼1110010
檢查碼字元"5",即為C
Type編碼1001110
UPC-A檢查碼計算方式
例如有一UPC-A碼為: 001234567890C
C為檢查碼
0 0 1
2 3 4
5 6 7 8
9 0
C
n13 n12 n11 n10 n9 n8 n7 n6 n5
n4 n3 n2 n1
步驟一. C1=(n2+n4+n6+n8+n10+n12)=0+8+6+4+2+0=20
步驟二. C2=20*3=60
步驟三. C3=(n3+n5+n7+n9+n11+n13)=0+9+7+5+3+1=25
步驟四. C4=60+25=85 ----> 於取個位數"5"
步驟五. C=10-5=5 檢查碼即為"5".
UPC-E碼
由UPC-A碼轉換而來,如下表所示共有10種轉換公式,符合其中
一項方可做轉換.
例如有一UPC-A碼為 <001200000345C>
(取中間11碼)
轉換成UPC-E碼為 <0123450C>
,符合第一個條件
<XXYYY0>
第一個字元固定為 0
12 --->
XX
345 --->
YYY
第七個字元為 0
第八個字元為 C
----> 即為檢查字元.
UPC-E碼的基本架構
左邊線:固定為101
第一個前置碼固定為0
資料碼為6碼,每一個字元由A
Type 或B Type編碼方式來
編碼.
以下為UPC-E資料碼與檢查碼關係之編碼方式一覽表
固定碼
檢查碼
0 | B | B | B | A | A | A | 0 |
0 | B | B | A | B | A | A | 1 |
0 | B | B | A | A | B | A | 2 |
0 | B | B | A | A | A | B | 3 |
0 | B | A | B | B | A | A | 4 |
0 | B | A | A | B | B | A | 5 |
0 | B | A | A | A | B | B | 6 |
0 | B | A | B | A | B | A | 7 |
0 | B | A | B | A | A | B | 8 |
0 | B | A | A | B | A | B | 9 |
檢查碼:必須將UPC-E碼轉換成UPC-A碼,轉換方式如圖二
所示做反編碼然後再計算檢查碼.
UPC-E碼與UPC-A碼的檢查碼兩者是相同的.
例如:有一UPC-E碼為0123450C
轉換成UPC-A碼為001200000345C
c1=(0+2+0+0+3+5)*3=30
c2=0+1+0+0+0+4=5
c1+c2=30+5=35 --------> 取個位數5
則檢查碼
C=10-5=5
右邊線:固定為010101