UPC-E ⇄ UPC-A 转换器
润唇膏或口香糖上那个短短的条码,是一个被挤掉了零的 UPC-A。粘贴任一形式即可得到另一种 —— 并看清到底哪些零不见了。
🔒 你的数据不会离开浏览器。
零抑制是怎么回事
UPC-E 不是另一套编号体系 —— 它是去掉了最多五个零的 UPC-A,好让条码能印在放不下完整符号的小包装上。哪些零可以去掉取决于它们的位置,而最后一位数据位记录了用的是哪种模式,扫描器据此把零补回去。
| 最后一位数据位 | 含义 |
|---|---|
| 0, 1 or 2 | 厂商代码以 000、100 或 200 结尾,且商品代码小于 1000。最后一位数据位记录的是厂商代码的第三位。 |
| 3 | 厂商代码以 00 结尾(第三位为 3–9),且商品代码小于 100。 |
| 4 | 厂商代码以 0 结尾(第四位非零),且商品代码小于 10。 |
| 5–9 | 厂商代码没有末尾的零,且商品代码是 5 到 9 之间的一位数 —— 它同时就是最后一位数据位。 |
这就是为什么大多数 UPC-A 没有 UPC-E 形式:零必须恰好在正确的位置上。如果你的码压缩不了,那是标准在说话,不是本工具的限制。
校验位的陷阱
UPC-E 的校验位不是按它自己的八位算的,而是展开后那个 UPC-A 的校验位。直接按短形式计算的实现会生成扫出来无效的码 —— 这是手写条码代码里的经典 bug。
UPC-E 与 EAN-8:长度相同,毫无关系
两者都是 8 位,相似之处到此为止。UPC-E 能展开成 12 位的 UPC-A;而 EAN-8 / GTIN-8 是一个独立的 GS1 号段,直接为小包装分配 —— 它展不开,也没有更长的形式。UPC-E 一定以 0 或 1 开头;以其他数字开头的 8 位码不可能是 UPC-E。本工具会同时展示两种解读,而不是替你猜。
本工具执行的全部检查(共 11 条规则)
INPUT-001 输入为空
去掉空白和格式字符之后什么都不剩。
修复: 请输入一个 GTIN:8、12、13 或 14 位数字。
来源: Yaktool data-hygiene rule — derived from real-world spreadsheet and copy-paste corruption patterns, not from a GS1 specification. Every case is covered by a regression test in our test suite.
INPUT-002 科学计数法损坏(Excel)
输入形如 “8.71E+12”。Excel 会把长数字转成科学计数法,并永久丢弃中间的数位——原始 GTIN 无法从这个值还原。
修复: 回到源文件。在 Excel 里先把该列设为「文本」格式(或在数值前加一个半角单引号),再重新导出。
来源: Yaktool data-hygiene rule — derived from real-world spreadsheet and copy-paste corruption patterns, not from a GS1 specification. Every case is covered by a regression test in our test suite.
INPUT-003 已移除格式字符
校验前去掉了空格、连字符、千分位分隔符,以及不可见字符(零宽空格、BOM、不换行空格)。从表格、PDF 或网页复制时很常见。
来源: Yaktool data-hygiene rule — derived from real-world spreadsheet and copy-paste corruption patterns, not from a GS1 specification. Every case is covered by a regression test in our test suite.
INPUT-004 已转换全角数字
全角数字(123,常见于中日韩输入法与文档)已转换为标准的半角数字。
来源: Yaktool data-hygiene rule — derived from real-world spreadsheet and copy-paste corruption patterns, not from a GS1 specification. Every case is covered by a regression test in our test suite.
INPUT-005 含非数字字符
清洗之后,输入里仍有不是数字的字符。GTIN 只由数字组成。
修复: 去掉字母和符号。如果数据里混进了内部 SKU,请单独取出条码所在的数字列。
来源: Yaktool data-hygiene rule — derived from real-world spreadsheet and copy-paste corruption patterns, not from a GS1 specification. Every case is covered by a regression test in our test suite.
INPUT-007 长度不合法
GTIN 必须恰好是 8 位(GTIN-8 / EAN-8)、12 位(GTIN-12 / UPC-A)、13 位(GTIN-13 / EAN-13)或 14 位(GTIN-14 / 箱码)。
修复: 检查是否被截断或与其他值连在了一起。7 位的值可能是丢了前导零的 GTIN-8。
INPUT-008 已移除末尾的 “.0”(表格软件的数值转换)
形如 “4006381333931.0” 的输入,说明这个值经过了某个把它当浮点数处理的工具(Excel、pandas)。“.0” 已被去掉、校验照常进行——但请检查该列其余的值有没有更严重的损坏(科学计数法、丢失的零)。
修复: 在源头把该列设为「文本」格式,从根上阻止数值转换。
来源: Yaktool data-hygiene rule — derived from real-world spreadsheet and copy-paste corruption patterns, not from a GS1 specification. Every case is covered by a regression test in our test suite.
CHECK-001 校验位不匹配
最后一位必须等于前面各位按 GS1 模 10 算法(自右起 3、1、3、1… 交替加权)算出的校验值。不匹配意味着录入错误、OCR 识别错误,或者这个码是编造的。
修复: 与实物包装上条码下方印的数字逐位核对。不要直接把校验位改成算出来的那个数,除非你确认其余各位都是对的。
FORMAT-001 GTIN-12 ⇄ GTIN-13 等价
UPC-A(GTIN-12)前面补一个 0 之后,与它的 GTIN-13 形式是同一个商品代码,校验位不变。不同平台可能显示其中任意一种形式。
FORMAT-004 GTIN-8 有自己的号段
GTIN-8(EAN-8)由 GS1 为小包装直接分配。GTIN-8 不是截短的、也不是补零的 EAN-13,它开头几位是 GS1-8 前缀,而不是厂商识别代码。
CONV-003 该 GTIN-13 没有对应的 UPC-A 形式
只有以 0 开头(美国/加拿大厂商识别代码)的 GTIN-13 才有 12 位的 UPC-A 形式。以其他前缀分配的码,根本不存在合法的 UPC 表示。
修复: 保留 13 位形式——美国各平台的 GTIN / UPC 字段都接受 GTIN-13 的值。
FORMAT-001 是最值得展开的一条:GTIN-8 是独立号段,不是补零的 UPC-E,把两者混为一谈是这个领域最常见的错误。号段与占位码检查属于完整校验器。
关于这些规则。 每一条都有编号、严重级别和通俗解释。每个来源链接都已登记在案,并对线上页面实际复验过,而不是凭印象写上去的;本工具的来源最近一次复验于 23 August 2026. 规则如何编写、测试与保持更新 →