在GS1-128 条码中,应用标识符(AI)的右括号 `)` 是否参与校验码计算,取决于编码模式(Code B 或 Code C)和具体AI的结构。以下是详细分析:
1. GS1-128 中 `)` 的处理规则
(1)AI 的括号 `(` 和 `)` 是否参与计算?
-传统Code 128:AI 的括号 `(` 和 `)` 是可见分隔符,通常不编码到条码中(仅用于人眼识别)。
-GS1-128 标准:
-`(`(左括号):必须编码(对应Code 128字符值 `40`)。
-`)`(右括号):不参与校验计算(GS1标准规定,AI的右括号 `)` 仅用于人眼阅读,不存储到条码数据)。
-例外:某些旧系统或错误实现可能错误包含 `)`,但标准GS1-128不计算它。
(2)编码示例
以 AI `(01) 12345678901234` 为例:
-人眼可见格式:`(01) 12345678901234`
-实际编码数据(用于校验计算):
- Start C(105)
- FNC1(102)
- `(`(40)
- `0`(16)
- `1`(17)
- `12345678901234`(数字模式,每2位1个值)
-不包含 `)`
2. 为什么 `)` 不参与计算?
1).GS1 标准规定:
- AI 的 `)` 仅用于人眼可读,条码扫描器会自动解析AI长度,无需 `)` 作为终止符。
2).数据紧凑性:
- 省略 `)` 可减少条码长度,提高扫描效率。
3).FNC1 替代作用:
- 在可变长度AI中(如 `(10)` 批号),FNC1 或下一个AI 会标识字段结束,无需 `)`。
3. 特殊情况分析
(1)固定长度 AI(如 `(17) 有效期`)
- AI `(17)` 的数据长度固定(6位 `YYMMDD`),无需 `)` 标识结束。
-编码内容:`(17)` → `(`(40) + `1`(17) + `7`(23) + 数据(如 `231231`)。
(2)可变长度 AI(如 `(10) 批号`)
- AI `(10)` 的数据长度可变,以FNC1 或下一个AI 结束。
-编码内容:`(10) ABC123` → `(`(40) + `1`(17) + `0`(16) + `ABC123`(Code B模式)。
4. 校验码计算正确流程
示例:`(01) 12345678901234`
1).编码数据(用于计算):
- Start C(105)
- FNC1(102)
- `(`(40)
- `0`(16)
- `1`(17)
- `12`(12)、`34`(34)、`56`(56)、`78`(78)、`90`(90)、`12`(12)、`34`(34)
-不包含 `)`
2).校验计算:
- 加权和 = `105 + (102×1) + (40×2) + (16×3) + (17×4) + (12×5) + ...`
- 最终校验位 = 总和 mod 103
5. 常见错误
1).错误包含 `)`:
- 某些低质量条码生成器可能错误编码 `)`(值 `41`),导致校验失败。
2).混淆Code 128与GS1-128:
- 普通Code 128 可能包含 `)`,但GS1-128 必须遵循GS1标准,省略 `)`。
结论
标准GS1-128 条码中,AI的右括号 `)` 不参与校验码计算。
- 仅 `(`(40)、AI数字(如 `0`、`1`)和数据部分参与计算。
- FNC1 或 AI 结构本身定义了字段结束,无需 `)`。
如需生成合规GS1-128条码,建议使用GS1认证的条码生成软件(如Zebra Designer、Bartender),避免手动计算错误。

1449

被折叠的 条评论
为什么被折叠?



