马论坛

注册

 

发新话题 回复该主题

如何通过条码判断产品是哪个国家 [复制链接]

1#
北京根治酒渣鼻医院         http://m.39.net/pf/a_8733714.html

问到这个问题就需要知道条码规定和组成,国际有很多条码类型,其中商品条码就像人的身份证,每一个合法的产品按照规定都应该有一个条码号,由厂家向国家物品编码中心申请及备案,因此每个商品的条码号都存在于国家及世界的物品编码中心的数据库中,因此可以通过商品条码查询到该产品的所属的国家和厂家信息,及是否有效。厂家信息需要到相应的网站查询,而所属国家通过了解商品条码的组成,可以自己判断。

用于零售单元的商品条码类型有:EAN-8/13,UPC-A/E.

UPC条码主要用于美国和加拿大,EAN条码为欧洲标准,用于除美国和加拿大的其它国家,我国用EAN条码。常见的为13位,即EAN-13条码。

商品条码的组成:

EAN-13(13位)=前缀码(3位)+厂商识别码(4或5位)+商品项目代码(5或4位)+校验码(1位)组。

商品条码一般分为4个部分,按3-5-4-1分,第一部分代表国家,第二部分代表生产厂商,第三部分代表厂内商品代码,第四部分是效验码。

以条形码3为例,此条形码分为4个部分,从左到右分别为:

1-3位:共3位,对应该条码的,是中国的国家代码之一。(--都是中国的代码,由国际上分配);

4-8位:共5位,对应该条码的,代表着生产厂商代码,由厂商申请,国家分配;

9-12位:共4位,对应该条码的,代表着厂内商品代码,由厂商自行确定;

第13位:共1位,对应该条码的3,是校验码,依据一定的算法,由前面12位数字计算而得到。

下面是EAN前缀码列表,通过前两位或3位就可以判断这个产品的国家,结合厂商代码可以查询厂家:

前缀码编码组织所在国家(或地区)/应用领域

~;~;~美国

~;~;~店内码

~优惠券

~法国

保加利亚

斯洛文尼亚

克罗地亚

波黑

~德国

~;~日本

~俄罗斯

吉尔吉斯斯坦

中国台湾

爱沙尼亚

拉脱维亚

阿塞拜疆

立陶宛

乌兹别克斯坦

斯里兰卡

菲律宾

白俄罗斯

乌克兰

摩尔多瓦

亚美尼亚

格鲁吉亚

哈萨克斯坦

中国香港特别行政区

~英国

希腊

黎巴嫩

塞浦路斯

阿尔巴尼亚

马其顿

马耳他

爱尔兰

~比利时和卢森堡

葡萄牙

冰岛

~丹麦

波兰

罗马尼亚

匈牙利

、南非

加纳

巴林

毛里求斯

摩洛哥

阿尔及利亚

肯尼亚

象牙海岸

突尼斯

叙利亚

埃及

利比亚

约旦

伊朗

科威特

沙特阿拉伯

阿拉伯联合酋长国

~芬兰

~中华人民共和国

~挪威

以色列

~瑞典

危地马拉

萨尔瓦多

洪都拉斯

尼加拉瓜

哥斯达黎加

巴拿马

多米尼加

墨西哥

~加拿大

委内瑞拉

~瑞士

哥伦比亚

乌拉圭

秘鲁

玻利维亚

阿根廷

智利

巴拉圭

厄瓜多尔

~巴西

~意大利

~西班牙

古巴

斯洛伐克

捷克

南斯拉夫

蒙古

朝鲜

土耳其

~荷兰

韩国

柬埔寨

泰国

新加坡

印度

越南

印度尼西亚

~奥地利

~澳大利亚

~新西兰

马来西亚

中国澳门特别行政区

连续出版物

、图书

应收票据

、普通流通券

~优惠券

黑线代表1,白线(或者说透明)代表0。

让我们来看一看刚刚的条形码,观察最左边和最右边,我们惊奇(好吧,其实我已经不惊奇了)地发现,有些线条比一般的黑线长,并且是对称的。我们按照黑线代表1,白线代表0的规则来读一下,分别是,。这几条较长的线称之为护线,它们的作用是让扫描仪意识到从这里开始向后扫描条形码。左护线后面有是6组X7位=42个比特位,每一组都可以为0~9编码,比特位之后又出现了一组长的黑线,称之为中间护线,仔细观察,发现它是00。中间护线之后又是6组X7位=42个比特位,同样可以为6个数字编码。

编码的规则是:

左边右边

=0011===5

=01111=00110=10=6

=20111=71100=2100=7

0111=30111=8100=31001=8

011=4011=91100=41100=9

左边的编码都是以0开头,以1结尾的,右边的则刚好相反。这是为了防止条形码被篡改而特意设置的。如果一个扫描仪在左编码中扫描到了一个以1开头,或者以0结尾的编码,那他就知道了,somebodyhasfuckedit!

仔细观察,我们会发现(好吧,我已经发现了)左边和右边的编码是互补的,即左边是0的位数,在右边都是1。另外,左边的编码都有奇数个1,右边的都有偶数个1。这种机制叫奇偶校验,它有什么作用呢?

大家应该知道,计算机的工作原理其实非常落后,只是因为它有着无与伦比的运算速度才显得计算机非常先进。所以,当一个粗心的收银员用扫描仪倒着读一个条形码时,计算机是不会知道该倒着读这个条形码的,这是就该奇偶校验起作用了,当扫描仪从护线开始读取条形码时,检测到第一组编码有偶数个1,它就知道它在倒着读条形码,然后就会做出调整,保证读到了正确的商品信息。

好了,现在让我们回过头看看上面的条形码表示什么数字,对它进行编码,得到了两组数字553398,折腾了半天居然就得到了本来就印在上面的东西,这……情何以堪。好吧,你总不能指望条形码里包含国家机密吧……

不要桑心了,我们回归数字,条形码前面还有一个6,这是什么意思呢?其实不是6,是,因为我国采用的是EAN-13,所以开头-就表示国产(大陆)货了。

不管6,我们得到的左边的编码表示的是公司,右边的编码表示的是产品,不同公司的话,即使右边的编码相同,代表的也是不同的商品。

这些数字里包含的仅仅是商品信息,而非价格信息,价格信息是储存在超市的计算机里的。

当你带着马克笔准备在超市里小小的用所学知识给自己谋一点小福利之前,请先确保你真的明白编码的意义(确保你看了下面一段)。我们看到右编码的最后一位是8,计算一下这个式子:

3X(9+0+5+3+0+9)+(4+5+3+6+0+8),即奇数位的数字和乘3加上偶数位的和,结果是,用10减去零头,10-2=8,恰好是右编码的最后一位。

巧合?不是的。这个字符称为模校验字符,这是一种冗余措施。如果扫描仪没有扫描到与计算结果一样的模校验字符,那么它就知道又有人耍滑头了。好了,现在你可以带上马克笔去试试运气了……

0~9的数字在二进制位中只要4个比特位就能全部表示了,但是条形码中却用了7个比特位表示一个数字,加上护线以及左右护线两旁的相当于9个0的空白,这个条形码用到了个比特位,用了这么多比特位仅仅编码了12个数字,似乎有点浪费。但是正是因为这种编码机制,给予扫描和防篡改了很大的方便。

以上图文来自欧线德进口商品。

点击上方“

分享 转发
TOP
发新话题 回复该主题