在线生成条形码(39码、EAN-13)
公司有个项目是使用实体刷卡的会员管理系统,并为其它系统如餐饮系统、美发厅管理系统等提供统一的会员注册与信息管理。暂定使用一维条形码卡。
一般来说,商品最常用的编码是EAN-13,而非商品(如图书馆会员卡,驾驶证条码等)一般使用39码。
在线测试地址:http://xoyozo.me/barcode/
39码
39码比较简单,条码以“*”为起始符和终止符,见下图:
它所能表示的字符包括:0~9 的数字,大写 A~Z 的英文字母,「+」,「-」,「*」,「/」,「%」,「$」,「.」,以及空格符(Space)等,共44组编码。
39码表:“0”对应白色空位,“1”对应黑色线条。
字元
逻辑型态
字元
逻辑型态
A
110101001011
N
101011010011
B
101101001011
O
110101101001
C
110110100101
P
101101101001
D
101011001011
Q
101010110011
E
110101100101
R
110101011001
F
101101100101
S
101101011001
G
101010011011
T
101011011001
H
110101001101
U
110010101011
I
101101001101
V
100110101011
J
101011001101
W
110011010101
K
110101010011
X
100101101011
L
101101010011
Y
110010110101
M
110110101001
Z
100110110101
字元
逻辑型态
字元
逻辑型态
0
101001101101
+
100101001001
1
110100101011
-
100101011011
2
101100101011
*
100101101101
3
110110010101
/
100100101001
4
101001101011
%
101001001001
5
110100110101
$
100100100101
6
101100110101
.
110010101101
7
101001011011
空白
100110101101
8
110100101101
9
101100101101
值得注意的是,39码生成的条形中,每个码之间有一个空位,经扫描枪测试,该空位与一个单位的线条宽度相等时,能确保被正确扫描。
代码见附件
EAN-13码
EAN-13码是由13位数字构成,其中最后一位为校验码:
左侧空白区
起始符
左侧数据符
中间分隔符
右侧数据符
校验符
终止符
右测空白区
9个模块
3个模块
42个模块
5个模块
35个模块
7个模块
3个模块
9个模块
校验码计算的步骤如下: 以 234235654652 为例:
数据码
校验码
代码位置序号
13
12
11
10
9
8
7
6
5
4
3
2
1
数字码
2
3
4
2
3
5
6
5
4
6
5
2
?
偶数位
3
+
2
+
5
+
5
+
6
+
2
奇数位
2
+
4
+
3
+
6
+
4
+
5
① 从序号2开始,将所有偶数位的数字代码求和,得出S1; S1=3+2+5+5+6+2=23
② 从序号3开始,将所有奇数位的数字求和,得出S2; S2=2+4+3+6+4+5=24
③ S3=S1*3+S2; S3=23*3+24=93
④ C=10-(S3的个位数),得到校验码C的值。并且当S3的个位数为0时,C=0。 C=10-3=7
EAN码的编码规则:
数字符
左侧数据符
右侧数据符
A
B
C
0
0001101
0100111
1110010
1
0011001
0110011
1100110
2
0010011
0011011
1101100
3
0111101
0100001
1000010
4
0100011
0011101
1011100
5
0110001
0111001
1001110
6
0101111
0000101
1010000
7
0111011
0010001
1000100
8
0110111
0001001
1001000
9
0001011
0010111
1110100
(关于左侧数据符,网络上的资料均显示A3及B6为6位数,经本人实践亲自查证,已修正)
起始符:101
中间分隔符:01010
终止符:101。
A、B、C中的“0”和“1”分别表示具有一个模块宽度的“空”和“条”。
因为左侧数据编码方式有两种,要按照前置码选其中一种,如表:
前置字符
左侧数据符编码规则的选择
0
A
A
A
A
A
A
1
A
A
B
A
B
B
2
A
A
B
B
A
B
3
A
A
B
B
B
A
4
A
B
A
A
B
B
5
A
B
B
A
A
B
6(中国)
A
B
B
B
A
A
7
A
B
A
B
A
B
8
A
B
A
B
B
A
9
A
B
B
A
B
A
以 6903244981002 (心相印软抽100抽) 为例:前置码为6,编码规则为 000000000101ABBBAA01010CCCCCC101000000000
再对应码表替换ABC,结果为:00000000010100010110100111010000100110110100011010001101010111010010010001100110111001011100101101100101000000000
在线DEMO:http://xoyozo.me/barcode/
源码下载:BarCode.rar
posted on 2009-07-12 13:04 Allen.Cheung 阅读(5812) 评论(2) 编辑 收藏 举报