返回博客
Aug 5, 2026阅读约 5 分钟· MariMetric Team

ISO 6346 集装箱号校验:开发者指南

集装箱号内置校验位。客户端和服务端双重校验,在提交追踪请求前捕获拼写错误。TypeScript 和 Python 代码示例。

ISO 6346Container NumberValidationTutorial

集装箱号结构

ISO 6346 标准集装箱号 11 个字符:4 个字母(承运人代码 + 类别) + 7 个数字(序列号 + 校验位)。例:MSCU1234567,MSKU 是 Maersk 承运人代码。

校验位计算原理

  1. 1将每个字符映射为数字值:0-9 = 0-9,A-Z(跳过 11 的倍数) = 10-38
  2. 2每个值乘以 2^(位置),位置从 0 开始
  3. 3求和
  4. 4对 11 取模
  5. 5若结果为 10,校验位为 0;否则为该结果

TypeScript 实现

function validateContainerNumber(num: string): boolean {
  if (!/^[A-Z]{4}\d{7}$/.test(num)) return false;
  const map: Record<string, number> = {};
  "0123456789A BCDEFGHIJ".replace(/ /g, "").split("").forEach((c, i) => {
    map[c] = i;
  });
  let sum = 0;
  for (let i = 0; i < 10; i++) {
    sum += (map[num[i]] ?? 0) * Math.pow(2, i);
  }
  const check = sum % 11;
  const expected = check === 10 ? 0 : check;
  return expected === parseInt(num[10], 10);
}

为什么要校验?

手动输入的集装箱号最多 5% 有拼写错误。客户端即时校验节省用户时间,也避免为无效输入浪费 1-3 次承运人 API 调用。MariMetric 每次查询都自动校验,试试看。

立即追踪集装箱

不只是阅读 —— 用 MSC、COSCO、ONE、CMA CGM 或 HMM 的真实箱号试试集装箱追踪。

立即追踪集装箱

相关文章

在船公司、港口与航线中发现更多内容。