GS1-128 解析器

粘贴物流条码下方的那串字符 —— 带括号的,或者直接来自扫描器的 —— 就能看到它包含的每一个字段、每个字段是什么意思,以及它的格式是否正确。

🔒 你的数据不会离开浏览器。

让多数解析器出错的那条规则

GS1 把应用标识符分成两类。一类有预定义长度 —— 由该 AI 的前两位数字决定,而不是由整个 AI 决定 —— 它后面紧接下一个 AI,中间没有分隔符。其余全部是变长的,而且必须以 FNC1(GS 字符)结束,除非它是串里最后一个元素。

漏掉这一点,批次号就会悄悄把它后面的序列号吞进去。这串仍然「解析得出来」,只是解析出的数据是错的。本工具套用的是真正的规则,分隔符缺失时会明确告诉你,而不是递给你一个看起来合理的错误结果。

定长 AI 的前缀表

AI 以此开头元素总长度
118 个字符(含 AI 本身)
128 个字符(含 AI 本身)
138 个字符(含 AI 本身)
148 个字符(含 AI 本身)
158 个字符(含 AI 本身)
168 个字符(含 AI 本身)
178 个字符(含 AI 本身)
188 个字符(含 AI 本身)
198 个字符(含 AI 本身)
204 个字符(含 AI 本身)
3110 个字符(含 AI 本身)
3210 个字符(含 AI 本身)
3310 个字符(含 AI 本身)
3410 个字符(含 AI 本身)
3510 个字符(含 AI 本身)
3610 个字符(含 AI 本身)
4116 个字符(含 AI 本身)
0020 个字符(含 AI 本身)
0116 个字符(含 AI 本身)
0216 个字符(含 AI 本身)
0316 个字符(含 AI 本身)
0418 个字符(含 AI 本身)

其余所有 AI 都是变长的,都需要分隔符。

日期:两位年份、滑动世纪,以及日为 00

GS1 的日期是 YYMMDD。两位年份按滑动窗口解析 —— 从今天往前 49 年、往后 50 年 —— 所以同样的数字,在不同时间读会落在不同的世纪。而日为 00 不是错误:它表示该月月末,「最佳食用期至三月底」就是这么编码的。

(15) 最佳食用期不是 (17) 有效期

最佳食用期是品质日期 —— 过了之后商品仍然安全。有效期是安全日期。把两者搞混是合规问题,不是格式问题,而这两个 AI 在键盘上恰好挨着。

本工具执行的全部检查(共 10 条规则)

AI-S01变长字段之后缺少 FNC1 分隔符

变长元素必须以 FNC1(编码为 GS 字符)结束,除非它是整串的最后一个元素。没有它就无从判断数据在哪里结束、下一个 AI 从哪里开始 —— 扫描器会把后面的 AI 当成你批次号的一部分读进去。

修复: 在变长元素之后插入 FNC1(GS)分隔符。

来源: GS1 General Specifications — Application Identifier definitions and the table of predefined-length AIs. Rules verified against real GS1-128 element strings in our regression tests.

AI-S02定长字段之后多了分隔符

长度由前两位预先定义的 AI 后面不得跟分隔符。多出来的 FNC1 是编码器常见的 bug,会让整串不符合规范。

修复: 去掉 (01)、(17)、(00) 这类定长元素之后的分隔符。

来源: GS1 General Specifications — Application Identifier definitions and the table of predefined-length AIs. Rules verified against real GS1-128 element strings in our regression tests.

AI-S03元素被截断

整串在这个元素凑齐它的 AI 所要求的字符数之前就结束了。

修复: 确认条码被完整扫入;读到一半通常意味着符号有破损。

来源: GS1 General Specifications — Application Identifier definitions and the table of predefined-length AIs. Rules verified against real GS1-128 element strings in our regression tests.

AI-F01数据长度不对

数据与它的 AI 所定义的长度不符 —— 定长 AI 需要恰好那么多字符,变长 AI 不得超过它的上限。

来源: GS1 General Specifications — Application Identifier definitions and the table of predefined-length AIs. Rules verified against real GS1-128 element strings in our regression tests.

AI-F02该 AI 不允许的字符

数字型 AI 只接受数字。字母数字型 AI 使用 GS1 的 AI 字符集 —— 大写字母、数字与有限的一组符号;小写字母不允许。

来源: GS1 General Specifications — Application Identifier definitions and the table of predefined-length AIs. Rules verified against real GS1-128 element strings in our regression tests.

AI-C01校验位不匹配

GTIN、SSCC、GLN 与 GSIN 的取值都带一位 GS1 模 10 校验位。不匹配意味着号码本身是错的,而不只是格式写法奇怪。

来源: GS1 General Specifications — Application Identifier definitions and the table of predefined-length AIs. Rules verified against real GS1-128 element strings in our regression tests.

AI-D01日期不合法

GS1 的日期是 YYMMDD。日为 00 是合法的,表示「月末」;其余不可能的日期都是错误。

来源: GS1 General Specifications — Application Identifier definitions and the table of predefined-length AIs. Rules verified against real GS1-128 element strings in our regression tests.

AI-D02两位年份按滑动窗口解释

GS1 把两位年份解析到「当前年份往前 49 年到往后 50 年」这个区间。所以同样的数字,在不同时间读出来会落在不同的世纪。

来源: GS1 General Specifications — Application Identifier definitions and the table of predefined-length AIs. Rules verified against real GS1-128 element strings in our regression tests.

AI-U01未知的应用标识符

这个 AI 不在本工具的表里。GS1 会不断新增 AI,所以未知不等于无效 —— 但没有定义就无从知道它的数据该有多长,解析到此为止。

来源: GS1 General Specifications — Application Identifier definitions and the table of predefined-length AIs. Rules verified against real GS1-128 element strings in our regression tests.

AI-L01元素重复出现

多数 AI 在一个单元数据串里只能出现一次。重复通常意味着两个条码被拼接在了一起。

来源: GS1 General Specifications — Application Identifier definitions and the table of predefined-length AIs. Rules verified against real GS1-128 element strings in our regression tests.

本工具认识的应用标识符(共 30 个)

这里保守地收录了日常贸易与物流标签上会见到的 AI。不在这份清单里的 AI 会让解析停下来,而不是去猜 —— 没有定义就无从知道它的数据该有多长。

AI含义数据
(00) SSCC 系列货运包装箱代码 18 位数字,定长
(01) GTIN 全球贸易项目代码 14 位数字,定长
(02) 内含贸易项目的 GTIN 14 位数字,定长
(10) 批次号 最多 20 个字符,变长
(11) 生产日期 6 位数字,定长
(12) 到期日 6 位数字,定长
(13) 包装日期 6 位数字,定长
(15) 最佳食用期 6 位数字,定长
(16) 售卖截止日 6 位数字,定长
(17) 有效期 6 位数字,定长
(20) 变体号 2 位数字,定长
(21) 序列号 最多 20 个字符,变长
(22) 消费品变体 最多 20 个字符,变长
(30) 可变数量 最多 8 位数字,变长
(37) 贸易项目数量 最多 8 位数字,变长
(90) 双方约定信息 最多 30 个字符,变长
(240) 附加商品标识 最多 30 个字符,变长
(241) 客户物料号 最多 30 个字符,变长
(400) 客户采购订单号 最多 30 个字符,变长
(401) 发货批号(GINC) 最多 30 个字符,变长
(402) 装运号(GSIN) 17 位数字,定长
(410) 收货方 / 送达方 GLN 13 位数字,定长
(411) 开票方 GLN 13 位数字,定长
(412) 供货方 GLN 13 位数字,定长
(413) 最终收货方 GLN 13 位数字,定长
(414) 实体位置 GLN 13 位数字,定长
(3100) 净重(kg) 6 位数字,定长
(3103) 净重(kg,3 位小数) 6 位数字,定长
(3200) 净重(lb) 6 位数字,定长
(3202) 净重(lb,2 位小数) 6 位数字,定长

关于这些规则。 每一条都有编号、严重级别和通俗解释。每个来源链接都已登记在案,并对线上页面实际复验过,而不是凭印象写上去的. 规则如何编写、测试与保持更新 →