我有一些产品上面有二维 GS1 条形码。大多数格式为 01.17.10,即 GTIN.Expiry Date.Lot Number.
这是有道理的,因为 01 和 17 是固定长度的,因此可以轻松解析,只需在适当的位置拆分字符串即可。
但是,我也有一些格式为 01.10.17.21(GTIN.Lot.Expiry.Serial Number),这没有意义,因为 Lot 和 Serial number 是可变长度的,这意味着我不能使用位置来解码各种元素。此外,我无法搜索 AI,因为它们可以合法地出现在数据中。
我似乎无法可靠地解码这种格式。我错过了什么吗?
谢谢!
根据 GS 1 网站,“一个条形码中可以携带多个 AI。发生这种情况时,具有固定长度数据内容(例如,SSCC 具有固定长度的 18 位数字)的 AI 被放置在开头和可变长度的 AI 放在末尾。如果一个条形码中放置了多个可变长度的 AI,则使用一个特殊的“功能”字符来告诉扫描仪系统何时结束,何时开始。 "
所以看起来他们打算让您先订购具有固定宽度标识符的 AI。然后用功能字符分隔可变宽度字段,它显示为 FNC1,但实现它取决于您使用的条形码符号系统,例如 DataMatrix、Code 128 和 QR Code 之间可能有所不同。
你没有遗漏任何东西。您正在处理的数据丢失了一些东西 u2060— 特别是非终端、可变长度 AI 值末尾的
GS
字符(ASCII 值 29)。
要与 GS1 系统兼容,条形码扫描仪必须:
GS
字符(ASCII 值 29)传输。FNC1 的这种传输协议可以追溯到第一个支持 GS1 应用程序标识符数据的符号体系,代码 128:
“当 FNC1 用于第一个或第二个位置时,它不应在传输的消息中表示[而是修改符号系统标识符的修饰符以指示 GS1 模式] ...第三个或后续字符位置的 FNC1 作为控制字符 GS(值 29)。” u2060— ISO/IEC 15417:2007 附录 B.4(规范性)。
此答案中提供了更多详细信息。