条形码(一维码)是用宽窄不同、平行排列的黑条和白条表示数字或字符的图形标识,常见的有商品上的 EAN-13、物流常用的 Code 128 和外箱上的 ITF-14,扫描枪读取后即可得到编码。下面说明常见的格式写法。
条形码格式转换说明
EAN-13 由国家或地区前缀码、厂商识别代码、商品项目代码和校验码组成,前三部分共 12 位。图书使用 978 或 979 开头的 ISBN 转换而来。Code 128 有 A、B、C 三个字符集:A 含大写字母和控制字符,B 含大小写字母,C 用每两位数字编成一个符号,适合长串数字。
示例
输入:EAN-13 前 12 位:692500300100
计算结果:校验码 4,完整码 6925003001004
说明:第 1、3、5…位乘 1,第 2、4、6…位乘 3,加权和 56;56 除以 10 余 6,校验码 = (10 − 6) mod 10 = 4;前缀 692 属于中国。
常见误区
- 误区:随便写 690 开头就是中国商品条码——必须注册才能使用
- 误区:条码可以无限缩小——EAN-13 的放大系数一般在 0.8 到 2.0 之间
- 误区:校验码可以随便填——错误的校验码扫描时会被拒读
- 误区:彩色条码一样好扫——红光扫描器下红色条与白底几乎无差别
与相关概念的区别
一维条形码只在水平方向存储信息,容量小、只能放较短的编码,但印刷简单、识读快;二维码在两个方向都存储信息,容量大、带纠错,但需要图像识别设备。超市收银以 EAN-13 为主,手机支付和网址分享以二维码为主。
JavaScript 示例
下面是用 JavaScript 实现的写法,可以按需要修改:
function ean13Check(d12) {
let s = 0;
for (let i = 0; i < 12; i++) s += Number(d12[i]) * (i % 2 ? 3 : 1);
return (10 - s % 10) % 10;
}
console.log(ean13Check('690123456789')); // 2
本站的条形码生成器工具可以直接在网页中使用,无需安装,适合快速得到和核对结果。
常见问题
【校验码怎么算?】EAN-13 前 12 位奇数位乘 1、偶数位乘 3 求和,用 10 减去和的个位数,结果为 10 时取 0。
【条形码扫不出来怎么办?】检查打印是否清晰、空白区是否足够、颜色对比度和校验码是否正确。
【条形码能存汉字吗?】一维条码基本不支持汉字,需要存中文时请改用二维码。
文中示例可以在本站对应工具中核对。