条形码code128编码规则

条形码或称条码barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案。条形码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等信息,因而在商品流通、图书管理、邮政管理、银行系统等许多领域都得到了广泛的应用。

条形码分类

条形码按类型可分为:线性条形码矩阵(二维)条形码

code128编码

Code 128是ISO/IEC 15417:2007[1]定义的条形码规范。

Code 128条码可以对全部128个ASCII字符(包括数字、大小写字母、符号和控制符)进行编码。

code128码是广泛应用在企业内部管理、生产流程、物流控制系统方面的条码码制,由于其优良的特性在管理信息系统的设计中被广泛使用,CODE128码是应用最广泛的线性条形码制之一。

code128编码分类

  • code128 A字符集:包括大写字母、数字、常用标点符号和一些控制符。

  • code128B 字符集:包括大小写字母、数字、常用标点符号。

  • code128C 字符集: 为纯数字序列。

  • code128Auto:是将上述三种字符集最佳优化组合。

code128编码构成

一个Code 128条形码由六部分组成。

  1. 空白区域
  2. 起始标记
  3. 数据区
  4. 校验符
  5. 终止符
  6. 空白区域

code128编码表

ID Code128A Code128B Code128C BandCode 图案
0 SP SP 0 212222 11011001100
1 ! ! 1 222122 11001101100
2 2 222221 11001100110
3 # # 3 121223 10010011000
4 $ $ 4 121322 10010001100
5 % % 5 131222 10001001100
6 & & 6 122213 10011001000
7 7 122312 10011000100
8 ( ( 8 132212 10001100100
9 ) ) 9 221213 11001001000
10 * * 10 221312 11001000100
11 + + 11 231212 11000100100
12 , , 12 112232 10110011100
13 - - 13 122132 10011011100
14 . . 14 122231 10011001110
15 / / 15 113222 10111001100
16 0 0 16 123122 10011101100
17 1 1 17 123221 10011100110
18 2 2 18 223211 11001110010
19 3 3 19 221132 11001011100
20 4 4 20 221231 11001001110
21 5 5 21 213212 11011100100
22 6 6 22 223112 11001110100
23 7 7 23 312131 11101101110
24 8 8 24 311222 11101001100
25 9 9 25 321122 11100101100
26 : : 26 321221 11100100110
27 ; ; 27 312212 11101100100
28 < < 28 322112 11100110100
29 = = 29 322211 11100110010
30 > > 30 212123 11011011000
31 ? ? 31 212321 11011000110
32 @ @ 32 232121 11000110110
33 A A 33 111323 10100011000
34 B B 34 131123 10001011000
35 C C 35 131321 10001000110
36 D D 36 112313 10110001000
37 E E 37 132113 10001101000
38 F F 38 132311 10001100010
39 G G 39 211313 11010001000
40 H H 40 231113 11000101000
41 I I 41 231311 11000100010
42 J J 42 112133 10110111000
43 K K 43 112331 10110001110
44 L L 44 132131 10001101110
45 M M 45 113123 10111011000
46 N N 46 113321 10111000110
47 O O 47 133121 10001110110
48 P P 48 313121 11101110110
49 Q Q 49 211331 11010001110
50 R R 50 231131 11000101110
51 S S 51 213113 11011101000
52 T T 52 213311 11011100010
53 U U 53 213131 11011101110
54 V V 54 311123 11101011000
55 W W 55 311321 11101000110
56 X X 56 331121 11100010110
57 Y Y 57 312113 11101101000
58 Z Z 58 312311 11101100010
59 [ [ 59 332111 11100011010
60 \ \ 60 314111 11101111010
61 ] ] 61 221411 11001000010
62 ^ ^ 62 431111 11110001010
63 _ _ 63 111224 10100110000
64 NUL ` 64 111422 10100001100
65 SOH a 65 121124 10010110000
66 STX b 66 121421 10010000110
67 ETX c 67 141122 10000101100
68 EOT d 68 141221 10000100110
69 ENQ e 69 112214 10110010000
70 ACK f 70 112412 10110000100
71 BEL g 71 122114 10011010000
72 BS h 72 122411 10011000010
73 HT i 73 142112 10000110100
74 LF j 74 142211 10000110010
75 VT k 75 241211 11000010010
76 FF I 76 221114 11001010000
77 CR m 77 413111 11110111010
78 SO n 78 241112 11000010100
79 SI o 79 134111 10001111010
80 DLE p 80 111242 10100111100
81 DC1 q 81 121142 10010111100
82 DC2 r 82 121241 10010011110
83 DC3 s 83 114212 10111100100
84 DC4 t 84 124112 10011110100
85 NAK u 85 124211 10011110010
86 SYN v 86 411212 11110100100
87 ETB w 87 421112 11110010100
88 CAN x 88 421211 11110010010
89 EM y 89 212141 11011011110
90 SUB z 90 214121 11011110110
91 ESC { 91 412121 11110110110
92 FS | 92 111143 10101111000
93 GS } 93 111341 10100011110
94 RS ~ 94 131141 10001011110
95 US DEL 95 114113 10111101000
96 FNC3 FNC3 96 114311 10111100010
97 FNC2 FNC2 97 411113 11110101000
98 SHIFT SHIFT 98 411311 11110100010
99 CODEC CODEC 99 113141 10111011110
100 CODEB FNC4 CODEB 114131 10111101110
101 FNC4 CODEA CODEA 311141 11101011110
102 FNC1 FNC1 FNC1 411131 11110101110
103 StartA StartA StartA 211412 11010000100
104 StartB StartB StartB 211214 11010010000
105 StartC StartC StartC 211232 11010011100
106 Stop Stop Stop 2331112 1100011101011

code128检验位计算

(开始位对应的ID值 + 每位数据在整个数据中的位置×每位数据对应的ID值)% 103

Code128编码示例

PZ1704946715 为例,开始为code128A,开始位对应的ID为103,第1位数据P对应的ID为48,第2位数据Z对应的ID为58,依此类推,可以计算。

检验位 = (103 + 1 * 48 + 2 * 58 + 3 * 17 + 4 * 23 + 5 * 16 + 6 * 20 +7 * 25 + 8 * 20 + 9 * 22 + 10 * 23 + 11 * 17 + 12 * 21) % 103 = 61​

即检验位的ID为61。

对照编码表,PZ1704946715 编码表示为:开始位Start Code A(11010000100)+ 数据位[P(11101110110)+ Z(11101100010)+1(10011100110)+ 7(11101101110)+ 0(10011101100)+ 4(11001001110)+ 9(11100101100)+ 4(11001001110)+ 6(11001110100)+ 7(11101101110)+ 1(10011100110)+ 5(11011100100)]+ 检验位61(11001000010)+ 结束位Stop(1100011101011)

若要打印,只需将1用黑色线标出,0用白色线标出,就完成一个简单的条形码生成。