集装箱号验证器

粘一个集装箱号,核对它的 ISO 6346 校验位,并看清每一段的含义 —— 箱主、设备类别、流水号。

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

那张把所有实现都绊倒的字母取值表

ISO 6346 给每个字母分配一个数,从 A = 10 起算 —— 但它跳过每一个 11 的倍数。所以 B 是 12,不是 11。L 是 23,不是 22。V 是 34,不是 33。把这张表写成简单的字母顺序,做出来的校验器就会把好端端的箱号判为无效 —— 这是手写 ISO 6346 代码里最常见的一个 bug。

字母取值
A 10
B 12 不是 11 —— 11 被跳过
K 21
L 23 不是 22 —— 22 被跳过
U 32
V 34 不是 33 —— 33 被跳过
Z 38

权重是第二个坑:每一位要乘的是 2 的幂(1、2、4、8 … 512),而不是它的位序号。

第四个字母不属于箱主代码

类别含义
U货运集装箱
J可拆卸的集装箱附属设备
Z挂车或底盘车

这一位上出现别的字母,就说明这串号不是一个合法的集装箱标识 —— 而一个打错的号码借此看着挺像回事,常见得出人意料。

标准自身的一处已知缺陷

这套校验算法可能算出余数 10,而标准把它记作 0。这意味着某些以 0 结尾的箱号天然是二义的:两个不同的流水号可以共用同一个校验位。这是 ISO 6346 的缺陷,不是哪一个箱子的问题;当你的号码正好落在这上面时,本工具会指出来,而不是假装这道校验是决定性的。

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

BOX-F01不是 11 位字符

集装箱箱号正好 11 位:3 位箱主代码、1 位设备类别代码、6 位序号,再加 1 位校验位。

修复: 从箱门或箱侧读。印刷形式里的空格(ABCU 123456 7)是排版,不属于号码本身。

来源: ISO 6346(集装箱的代码、识别与标记)。算法在我们的回归测试里用真实集装箱号验证过。

BOX-F02字符形状不对

前四位必须是字母,后七位必须是数字。不符合这个形状的号码不是 ISO 6346 集装箱箱号。

修复: 检查字母段与数字段里 0/O、1/I 的混淆。

来源: ISO 6346(集装箱的代码、识别与标记)。算法在我们的回归测试里用真实集装箱号验证过。

BOX-F03设备类别代码非法

第四个字母是设备类别代码,只能是 U、J 或 Z:U 表示货运集装箱,J 表示可拆卸的集装箱附属设备,Z 表示挂车或底盘车。

修复: 标准海运集装箱这一位是 U。

来源: ISO 6346(集装箱的代码、识别与标记)。算法在我们的回归测试里用真实集装箱号验证过。

BOX-C01校验位不匹配

第十一位是由前十位算出来的校验位,字母取值跳过 11 的倍数,权重是 2 的幂。对不上意味着号码读错了或者是编的。

修复: 对着集装箱本身重读一遍;校验位单独印在一个方框里。

来源: ISO 6346(集装箱的代码、识别与标记)。算法在我们的回归测试里用真实集装箱号验证过。

BOX-C02校验位正好落在标准的已知歧义点上

这套算法可能算出余数 10,而 ISO 6346 把它写成 0。于是有些校验位为 0 的箱号是有歧义的 —— 这是标准本身的已知弱点,不是这个箱号有什么问题。

来源: ISO 6346(集装箱的代码、识别与标记)。算法在我们的回归测试里用真实集装箱号验证过。

BOX-S01箱主代码

前三个字母是箱主前缀,在国际集装箱局(BIC)注册。把前缀解析成公司需要 BIC 注册库,本工具没有内置 —— 所以只报出代码,不猜箱主名称。

来源: ISO 6346(集装箱的代码、识别与标记)。算法在我们的回归测试里用真实集装箱号验证过。

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