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):

Bit13 Bit12 Bit11 Bit10 Bit9 Bit8 Bit7
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

例如:条码 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 马来西亚

 


你可能感兴趣的:(c,出版)