关于自动补全、纠正Ean13、Ean8、UPC、UPC-E、ITF14校验码
对于全球广泛使用的商品条形码码制(Ean13、Ean8、UPC、UPC-E、ITF14等),都需要有校验码,并且都是条形码字符的最后一位,此校验码的作用是确保扫码设备能准确识别出条形码字符内容。
多零的条形码生成功能,能够自动添加、纠正校验码,在选用对应的码制(如Ean13、Ean8、UPC、UPC-E、ITF14)情况下,校验码算法规则如下:
- 对于没有校验码的条形码内容字符,将自动补全最后1位校验码
例如Ean13条形码,包含校验码,一共13位数字,如果只输入12位数字,程序将会自动生成最后1位校验码。如下图示:
例如输入Ean13条形码12位数字690000000017,则程序自动生成最后1位校验码,补全后完整的数字是6900000000175。
- 对于含有校验码的条形码内容字符,但是校验码不正确,程序将会自动纠正此校验码
例如Ean13条形码,输入13位数字,最后1位数字不正确,那么,程序将会自动纠正最后1位校验码。如下图示:
Ean13条形码的前12位数字是690000000017,其正确的校验码是5,如果输入错误的校验码例如6900000000170,则程序仍然会自动修正为6900000000175。
可能会出现一些错觉
正如上面提到的第2点规则(输入错误的校验码,会自动修正为正确的校验码),如果连续输入都是错误的校验码,那么就会一直显示正确的校验码,而且条形码也是相同不变,这样就可能会令人产生一些错觉:
- 输入新条形码内容后,仍然显示之前一个条形码;
- 程序出错了,没有生成新的条形码;
正如上图的示例,690000000017,其正确的校验码是5,无论最后1位校验位输入是1、2、3、4、6...,都会修正为5,那么条形码内容仍然是6900000000175,则条形码仍然是此前的条形码,看起来没有变化。
确实需要自定义最后1位数字?
可能有一些内部业务的确实需要使用到条形码内容的最后1位数字,以标识产品的某种信息,例如Ean13条形码 6900000000171表示第1个车间生产、 6900000000172表示第2个车间生产,等等。
基于条形码码制编码规则,校验码是不能错误的前提下,多零建议以下方法解决:
- 使用正确的校验码生成条形码,修改条码脚注为自定义的字符内容;
以6900000000175生成Ean13条形码,但是其脚注标注为6900000000171、6900000000172、6900000000173等。
- 改用Code128码制生成条形码;
如果是内部使用,无需对接外部环境,无需由外部设备扫码识别,可改为Code128码制,这样就没有最后1位数字校验码的限制了。
如何批量生成校验码?
请点击查看【如何批量生成条形码的校验码】,了解批量生成方法。
---------------
了解更多: 如何计算条形码EAN13的校验码