EAN码详解

EAN 码在表示数字 0-9 时使用了三种不同的编码模板。暂且称它们为 Tall A/B/C,因此,数字 0 在使用 Tall A 和 Tall B 时的编码是不同的,Tall C 是 Tall A 的逆向图像。EAN 条码总是要使用两到三个模板来编码,EAN8 使用了 Tall A 和 Tall C,EAN13 使用 Tall A,B,C。下面是每个条码数字与 ASCII 码字符的对照映射表(表 1):

         Start        Tall A        Tall B        Tall C
   数字   字符    数字   字符    数字   字符    数字   字符
      0      !       0      A       0      Q       0      0
      1      "       1      B       1      R       1      1
      2      #       2      C       2      S       2      2
      3      $       3      D       3      T       3      3
      4      %       4      E       4      U       4      4
      5      &       5      F       5      V       5      5
      6      '       6      G       6      W       6      6
      7      (       7      H       7      X       7      7
      8      )       8      I       8      Y       8      8
      9      *       9      J       9      Z       9      9


光有上面的映射表,不知道 EAN 的编码规则还是不行的。

EAN8
EAN8 编码总是以 [ 字符作为起始字符,随后的 4 个数据字符使用 Tall A 映射,中间插一个分隔字符 |,然后是使用 Tall C 映射的 3 个数据字符和一个检查和字符,最后有一个停止字符 ]
例如:09234574 的 EAN8 编码为 [ AJCD | 4574 ]
其实最后的这个检查和字符 4 是计算出来的,也就是说,有了前 7 位,第 8 位就可以计算出来。
EAN8 检查和的计算方法:
定义最右边的位为奇数位,前一位为偶数位,依次往左类推:
数据: 0 9 2 3 4 5 7
位置: O E O E O E O
奇数位和: 0 + 2 + 4 + 7 = 13, 13 * 3 = 39
偶数位和: 9 + 3 + 5 = 17
奇偶位和: 17 + 39 = 56
检查和:60 - 56 = 4
( 60 是 56 向上取整到 10 的倍数 )

EAN13
EAN13 要稍微复杂一些,它总是以一个 Start(见前面的表1) 字符开始,接着一个使用 Tall A 映射的字符,随后的 5 个字符混合使用 Tall A,B 映射,中间加一个分隔符 |,后面的 5 个字符和检查和使用 Tall C 映射,最后是一个停止符 ]
关键是使用 A,B 混合映射的那 5 个字符,它们的映射关系取决于条码的第一个字符(绿色那个),这个对应关系如下表所示(表2):

Bit13Bit12Bit11Bit10Bit9Bit8Bit7
0AAAAAA
1AABABB
2AABBAB
3AABBBA
4ABAABB
5ABBAAB
6ABBBAA
7ABABAB
8ABABBA
9ABBABA

例如:条码 2923457890247 的 EAN13 编码过程为:
位置: 13 12 11 10 9  8  7  6  5  4  3  2  1
数据:  2  9  2  3  4  5  7  8  9  0  2  4  7
分解:  2 9 23457 890247
映射:  # J CTUFX 890247
加分隔/停止字符,最后结果:#JCTUFX|890247]
EAN13 检查和的计算方法:
与 EAN8 的计算方法相同:
数据: 2 9 2 3 4 5 7 8 9 0 2 4
位置: E O E O E O E O E O E O
奇数位和: 9 + 3 + 5 + 8 + 0 + 4 = 29, 29 * 3 = 87
偶数位和: 2 + 2 + 4 + 7 + 9 + 2 = 26
奇偶位和: 87 + 26 = 113
检查和: 120 - 113 = 7


PS:
  商业是最早应用条码技术的领域。在商业自动化系统中,商品条码是关键。
  在国家标准GB/T 12904中,商品条码 (barcode for commodity)的被定义为用于标识国际通用的商品代码的一种模块组合型条码。
  1970年美国超级市场委员会制定了通用商品代码UPC码,美国统一编码委员会(UCC)与1973年建立了UPC条码系统,并全面实现了该码制的标准化。UPC条码成功地应用于商业流通领域中,对条码的应用和普及起到了极大的推动作用。
  UPC码的使用成功促使了欧洲编码系统(EAN)的产生。到1981年,EAN已发展成为一个国际性的组织,且EAN码与UPC码兼容。
  EAN/UPC码作为一种消费单元代码,被用于在全球范围内唯一标识一种商品。
  EAN码有两种版本——标准版和缩短版。标准版表示13位数字,又称为EAN13码,缩短版表示8位数字,又称EAN8。两种条码的最后一位为校验位,由前面的12位或7位数字计算得出。两种版本的编码方式可参考国标GB-12094-1998。
  EAN码由前缀码、厂商识别码、商品项目代码和校验码组成。前缀码是国际EAN组织标识各会员组织的代码,我国为690、691和692;厂商代码是EAN编码组织在EAN分配的前缀码的基础上分配给厂商的代码;商品项目代码由厂商自行编码;校验码为了校验代码的正确性。在编制商品项目代码时,厂商必须遵守商品编码的基本原则:对同一商品项目的商品必须编制相同的商品项目代码;对不同的商品项目必须编制不同的商品项目代码。保证商品项目与其标识代码一一对应,即一个商品项目只有一个代码,一个代码只标识一个商品项目。
  如听装健力宝饮料的条码为6901010101098,其中690代表我国EAN组织,1010代表广东健力宝公司,10109是听装饮料的商品代码。这样的编码方式就保证了无论在何时何地,6901010101098就唯一对应该种商品。
  另外,图书和期刊作为特殊的商品也采用了EAN13表示ISBN和ISSN。前缀977被用于期刊号ISSN,图书号ISBN用978为前缀,我国被分配使用7开头的ISBN号,因此我国出版社出版的图书上的条码全部为9787开头。
  下表列出了部分前缀码所代表的EAN组织。

EAN已分配给各编码组织的前缀码

前缀码

各编码组织所在国家(地区)前缀码各编码组织所在国家(地区)
00—13美国和加拿大609毛里求斯
20—29店内码(对无条码商品自行编码)611摩洛哥
30—37法国613阿尔及利亚
380保加利亚619突尼斯
383斯洛文尼亚622埃及
385克罗地亚625约旦
387波黑626伊朗
400—440德国64芬兰
45、49日本690—692中国
460—469俄罗斯联邦70挪威
471中国台湾729以色列
474爱沙尼亚73瑞典
475拉脱维亚740危地马拉
477立陶宛741萨尔瓦多
479斯里兰卡742、744洪都拉斯、哥斯达黎加
480菲律宾743尼加拉瓜
481白俄罗斯745巴拿马
482乌克兰746多米尼加
484摩尔多瓦750墨西哥
485亚美尼亚759委内瑞拉
486格鲁吉亚76瑞士
487哈萨克斯坦770哥伦比亚
489中国香港773乌拉圭
50英国775秘鲁
520希腊777玻利维亚
528黎巴嫩779阿根廷
529塞浦路斯780智利
531马其顿2784巴拉圭
535马耳他786厄瓜多尔
539爱尔兰789巴西
54比利时和卢森堡80—83意大利
560葡萄牙84西班牙
569冰岛850古巴
57丹麦858斯洛伐克
590波兰859捷克
594罗马尼亚860南斯拉夫
599匈牙利869土耳其
600—601南非893越南
87荷兰899印度尼西亚
880韩国90、91奥地利
885泰国93澳大利亚
888新加坡94新西兰
890印度955马来西亚

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值