简述

EAN码

  • EAN码(European Article Number)是国际物品编码协会制定的一种全球通用的商用条码。EAN码分为:标准版(EAN-13) 和 缩短版(EAN-8) 两种。EAN-13 由 12位数据 + 1位校验组成,EAN-8 由 7位数据 + 1位校验位组成。

EAN-13

  • EAN13码由13位数字构成,第一位为前置码,最后一位为校验码。条码格式如下:
    在这里插入图片描述
  • 区域划分:
左侧空白区起始符左侧数据符中间分隔符右侧数据符校验符终止符右侧空白区
11个模块3个模块42个模块5个模块35个模块7个模块3个模块7个模块
  • 代码划分:
国家代码厂商代码产品代码校验码
3位数字4位数字5位数字1位数字
  • 编码解析:
  1. 左侧空白区:
    位于条码的最左侧,其最小宽度为11个条形模块宽度

  2. 前置码:
    前置码是不用条码符号表示的,功能是做为左侧数据符的编码设定之用。前置码是国家代码的第1位数字。

  3. 起始符:
    位于左侧空白区的右侧,表示信息开始的特殊符号,由3个条形模块组成,逻辑为101(1代表细黑,0代表细白)。

  4. 左侧数据符:
    位于起始符号右侧与中间分隔符左侧的一组条码字符。表示6位数字信息,由42个条形模块组成,每个数字对应7个条形模块。左侧数据符有A、B两类编码,通过前置码来选择左侧数据符选择的编码逻辑。
    编码逻辑 :

前置码编码方式前置码编码方式
0AAAAAA1AABABB
2AABBAB3AABBBA
4ABAABB5ABBAAB
6ABBBAA7ABABAB
8ABABBA9ABBABA

A、B类编码说明:

数字A类编码B类编码
000011010100111
100110010110011
200100110011011
301111010100001
401000110011101
501100010111001
601011110000101
701110110010001
801101110001001
900010110010111
  1. 间分隔符:
    位于左侧数据符的右侧,是平分条码字符的特殊符号,由5个条形模块组成,逻辑方式为01010(1代表细黑,0代表细白)。

  2. 右侧数据符:
    位于中间分隔符右侧,校验符左侧的一组条码字符。表示5位数字信息的一组条码字符,由35个条形模块组成,每个数字对应7个条形模块。右侧数据符使用C类编码。

C类编码说明:

数字C类编码
01110010
11100110
21101100
31000010
41011100
51001110
61010000
71000100
81001000
91110100
  1. 校验符:
    位于右侧数据符的右侧,表示校验码的条码字符,由7个条形模块组成。

13位条码序号:

N1N2N3N4N5N6N7N8N9N10N11N12C

校验码计算规则:
C1 = N1 + N3 + N5 + N7 + N9 + N11;
C2 = (N2 + N4 + N6 + N8 + N10 + N12)*3;
CC = (C1 + C2)%10;
C = 10 - CC;
if(10 == C)
C = 0;

  1. 终止符:
    位于条码符号校验符的右侧,表示信息结束的特殊符号,由3个条形模块组成,逻辑方式为101(1代表细黑,0代表细白)。

  2. 右侧空白区:
    位于条码符号最右侧的与空的反射率相同的区域,其最小宽度为7个条形模块宽。为保护右侧空白区的宽度,可在条码符号右下角加“>”符号。

EAN-8

  • EAN8条码由8位数字组成,3位国家代码+4位产品代码+1位校验码。
    在这里插入图片描述
  • 区域划分:
左侧空白区起始符左侧数据符中间分隔符右侧数据符校验符终止符右侧空白区
7个模块3个模块28个模块5个模块21个模块7个模块3个模块7个模块
  • 代码划分:
国家代码产品代码校验码
3位数字4位数字1位数字
  • 编码解析
    EAN8使用的编码和EAN13的相同, 唯一的不同点是EAN8编码没有使用前置码来决定左资料码的编码格式。EAN8编码左资料编码使用的是A类编码。

UPC码

  • 通用产品代码(Universal Product Code),通常简称UPC码,是美国均匀码理事会(Uniform Code Council, UCC)制定的一种商品条码,主要在美国及加拿大使用。在其基础之上发展起来的EAN码则已发展成为适用范围最广的通用条码。
  • UPC码是美国统一代码委员会UCC制定的商品条码,它是世界上最早出现并投入应用的商品条码,在北美地区得以广泛应用。UPC码在技术上与EAN码 完全一致,它的编码方法也是模块组合法,也是定长、纯数字型条码。UPC码有5种版本,常用的商品条码版本为UPC-A码和UPC-E码。UPC-A码是 标准的UPC通用商品条码版本,UPC-E码为UPC-A的压缩版。
版本应用对象格式
UPC-A通用商品SXXXXX XXXXXC
UPC-B医药卫生SXXXXX XXXXXC
UPC-C产业部门XSXXXXX XXXXXCX
UPC-D仓库批发SXXXXX XXXXXCXX
UPC-E商品短码XXXXXX

注:S-系统码  X-资料码  C-检查码

UPC-A

  1. 概述:
    UPC-A 条码是美国较常用也较被广泛认可的条码类型。它主要用于零售行业。UPC-A 由统一杂货产品代码委员会与 IBM 联合开发。
  2. 条形码组成
    UPC-A 条码由 12 位组成。开头是个单数字系统字符,指示条码的分类方式:普通产品、加权项目、药物、优惠等。后面是个五位的制造商代码,接下来是个五位的产品代码,最后是个校验位。每位由不同宽度的两个条纹和两个空格的独有标识样式表示。除了数字之外,不能使用任何字母或其他特殊字符。条码格式如下:
    在这里插入图片描述
  • 区域划分:
左侧空白区起始符左侧数据符中间分隔符右侧数据符校验符终止符右侧空白区
9个模块3个模块42个模块5个模块35个模块7个模块3个模块9个模块
  • 代码划分:
系统字符厂商代码产品代码校验码
1位数字5位数字5位数字1位数字
  1. 编码解析:
  • 左侧空白区
    位于条码的最左侧,其最小宽度为9个条形模块宽度

  • 系统字符
    开头是个单数字系统字符,指示条码的分类方式:普通产品、加权项目、药物、优惠等。

  • 起始符
    位于左侧空白区的右侧,表示信息开始的特殊符号,由3个条形模块组成,逻辑为101(1代表细黑,0代表细白)。

  • 左侧数据符
    位于起始符号右侧与中间分隔符左侧的一组条码字符。表示6位数字信息,由42个条形模块组成,每个数字对应7个条形模块。左侧数据符使用A类编码。

  • 中间分隔符
    位于左侧数据符的右侧,是平分条码字符的特殊符号,由5个条形模块组成,逻辑方式为01010(1代表细黑,0代表细白)。

  • 右侧数据符
    位于中间分隔符右侧,校验符左侧的一组条码字符。表示5位数字信息的一组条码字符,由35个条形模块组成,每个数字对应7个条形模块。右侧数据符使用C类编码。
    A、C类编码说明:

数字A类编码C类编码
000011011110010
100110011100110
200100111101100
301111011000010
401000111011100
501100011001110
601011111010000
701110111000100
801110111001000
900010111110100
  1. 校验符
    位于右侧数据符的右侧,表示校验码的条码字符,由7个条形模块组成。
    12位条码序号:
N1N2N3N4N5N6N7N8N9N10N11C

校验码计算规则
C1 = (N1 + N3 + N5 + N7 + N9 + N11)*3;
C2 = N2 + N4 + N6 + N8 + N10;
CC = (C1 + C2)%10;
C = (10 - CC)%10;

  1. 终止符
    位于条码符号校验符的右侧,表示信息结束的特殊符号,由3个条形模块组成,逻辑方式为101(1代表细黑,0代表细白)。

  2. 右侧空白区
    位于条码符号最右侧的与空的反射率相同的区域,其最小宽度为9个条形模块宽。

UPC-E

  1. 概述
    UPC-E码又称UPC缩短码,是UPC-A码的简化模式,UPC-E商品条码不含中间的分隔符,从左到右是有左侧空白区、起始字符、数据字符、终止字符、右侧空白区,以及供人识别的字符组成。
  2. 条码的组成
    UPC-E有8位数字构成 , 1位系统字符 + 6位数据字符 + 1位检验字符。条码格式如下:
    在这里插入图片描述
  • 区域划分:
左侧空白区起始符数据符校验符终止符右侧空白区
9个模块3个模块42个模块7个模块6个模块9个模块
  • 代码划分:
系统字符数据字符校验码
1位数字6位数字1位数字
  1. 编码解析
  • 左侧空白区
    位于条码的最左侧,其最小宽度为9个条形模块宽度
  • 系统字符
    系统字符是不用条码符号表示的,系统字符不是 0 就是 1 。
  • 起始符
    位于左侧空白区的右侧,表示信息开始的特殊符号,由3个条形模块组成,逻辑为101(1代表细黑,0代表细白)。
  • 数据符
    数据符有6位数字信息,由42个条形模块组成,每个数字对应7个条形模块。数据符有A、B两类编码,通过校验码来选择数据符选择的编码逻辑。
  • 校验码
    校验码也不用条码符号表示,主要功能是用于数据字符的编码逻辑选择。
  • 终止符
    表示信息结束的特殊符号,由6个条形模块组成,逻辑为010101(1代表细黑,0代表细白)。
  • 右侧空白区
    位于条码的最右侧,其最小宽度为9个条形模块宽度

编码逻辑:

校验码系统字符为 0系统字符为 1
0BBBAAAAAABBB
1BBABAAAABABB
2BBAABAAABBAB
3BBAAABAABBBA
4BABBAAABAABB
5BAABBAABBAAB
6BAAABBABBBAA
7BABABAABABAB
8BABAABABABBA
9BAABABABBABA

A、B类编码说明:

数字A类编码B类编码
000011010100111
100110010110011
200100110011011
301111010100001
401000110011101
501100010111001
601011110000101
701110110010001
801110110001001
900010110010111
  1. 校验位计算
  • 先将UPC-E转换成UPC-A,在使用UPC-A校验码计算规则计算

CODE128

Code128编码的特性

  • 具有A、B、C三种不同的编码类型,可提供标准ASCII中128个字元的编码使用
  • 允许双向扫描(正着反着都能扫)
  • 可自行决定是否加上检验位(但付款码必须要校验位)
  • 条码长度可调,但包括开始位和结束位在内,不可超过232个字元(付款码也就十几二十位数字)
  • 同一个128码,可以由A、B、C三种不同编码规则互换,既可扩大字元选择的范围,也可缩短编码的长度。

条形码格式
在这里插入图片描述

  • 优先选用的编码规则
    由于编码规则越复杂,二维码就越复杂,所以条形码编码优先使用的是Code128C这个编码规则。
    CODE128C将数字两个两个组合在一起,大大减小了条码的复杂度。

  • CODE128的编码规则
    为了方便表达,我们用b代表一条黑色像素宽度的线,s代表一条白色像素宽度的线,当bs组合时,中间不留任何缝隙

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐