UPC/EAN 条码校验与生成
条码这套编号是怎么回事
- 校验位是怎么算的
- GTIN 全家用同一套算法:从右边的数据位开始,依次乘 3、1、3、1……全部加起来得到 S,校验位就是「把 S 补到 10 的整数倍还差多少」,即
(10 − S mod 10) mod 10。以 EAN-13 的数据位690123456789为例:从最右的 9 起按 3、1 交替加权,得 S = 27+8+21+6+15+4+9+2+3+0+27+6 = 128,补到 130 还差 2,所以完整码是6901234567892。因为权重是从右边数的,不同位数的码里同一个位置的权重不一样——UPC-12 的首位权重是 3,EAN-13 的首位权重是 1,这也是很多人手算出错的地方。本页会把每一位的权重和乘积都列出来。 - UPC-A、EAN-13、GTIN-14 是同一个号
- 它们之间只差前面补几个零:UPC-A 的 12 位前面补一个 0 就是 EAN-13,EAN-13 前面再补一个 0 就是 GTIN-14。补零不会改变校验位(因为 0 乘任何权重都是 0,而补零的个数是偶数或不影响后续权重的排布)。GTIN-14 第一位不是 0 时叫「包装指示符」,1–8 表示不同的箱规层级,9 表示变量计量商品——所以同一款货的单件码和整箱码前 13 位一样、第 1 位不同,校验位也会跟着变。
- UPC-E 是怎么压缩的
- UPC-E 把 12 位压成 8 位,靠的是让厂商代码里出现连续的 0。压缩规则由最后一位数据位决定:它是 0/1/2 时还原成「厂商前两位 + 它 + 四个 0 + 产品后三位」;是 3、4 时零的位置各往后挪;是 5–9 时还原成「厂商五位 + 四个 0 + 它」。所以不是所有 UPC-A 都能压成 UPC-E,只有零的排布刚好符合上面四种模式的才行。本页会告诉你能不能压。
- 前缀不代表产地
690–699是中国物品编码中心分配的,但它只说明这个厂商代码是在中国注册的,不代表商品在中国生产。一家中国公司在越南代工的货,条码照样是 690 开头;反过来外企在中国生产的货也可能是 40 开头。拿条码前缀判断产地是常见误区。- 978 和 979 是图书
- ISBN-13 就是以 978 或 979 开头的 EAN-13,所以它也能被普通条码枪扫。老的 ISBN-10 转 ISBN-13 的办法是:前面加 978、去掉原来的校验位、再按 GTIN 规则重算校验位。注意 ISBN-10 的校验位用的是模 11 算法,余数为 10 时写作
X,和 GTIN 的模 10 完全不同,不能混用。977 是期刊 ISSN,980–984 是各类票券。 - EAN-8 不是 EAN-13 的缩写
- EAN-8 是给包装太小放不下 13 位码的商品单独申请的短码,它和同款商品的 13 位码之间没有换算关系,必须单独向 GS1 申请。不要试图把 EAN-13 截短成 EAN-8。
- 相关工具
- 条形码生成、二维码生成、校验码计算、亚马逊链接生成、成本利润与 ROI 计算。