Code 39今年迎来52岁生日,至今仍比诞生年龄只有它一半的条形码更为长寿。您不会在超市小票上看到它——但它出现在您本地汽配店的零件箱上、挂在您脖子上的身份徽章上,以及军用货物的标签上。如果客户、标准或老旧扫描仪曾告诉您“我们需要Code 39”,本文将解释这一切究竟意味着什么,以及如何批量生成它而无需逐一手动输入。
目录
Code 39 速览
Code 39(也称为Code 3 of 9)是一种1974年的条形码标准,可编码大写字母、数字和少量符号。它具有自校验性,因此校验位是可选的,但对于相同数据,它所占用的物理空间大约是Code 128的两倍。它仍是美国国防物流(LOGMARS)、汽车零部件(AIAG)、航空航天、医疗标签和身份徽章的标准——适用于任何扫描仪兼容性比标签尺寸更重要的场合。
1. 什么是Code 39条形码?
名称的由来
Code 39由David Allais博士和Ray Stevens于1974年在Intermec公司开发。最初的设计每个字符使用两条宽条和一个宽间隔,共产生40种可能的组合——其中一种被保留作为起始/终止标记,剩下39个可用字符,这正是“Code 39”(也写作Code 3 of 9)名称的由来。后来又新增了四个标点符号字符,使现代字符集达到43个字符。
从结构上看,每个Code 39字符由9个元素构成——5条竖线和4个空格——其中恰好3个为“宽”、6个为“窄”。这个9选3的比例正是名称中“39”的真正来源,也正是这种符号系统具备自校验性的原因:由于只有少量固定的宽/窄图案组合是有效字符,一条印刷或读取错误的竖线几乎不可能碰巧生成另一个有效字符——它只会导致扫描失败。
正是这种自校验特性,使得Code 39不像EAN-13或UPC-A那样必须使用校验位。其字符集涵盖大写字母A–Z、数字0–9、空格,以及七个符号:- . $ / + %和空格。星号(*)用于标记代码的起止位置,不能作为数据出现。标准Code 39不支持小写字母——如需支持,则需要扩展(全ASCII)Code 39,它通过组合标准字符对来表示额外符号,并要求扫描仪经过专门配置才能解码。
2. 如今究竟谁在使用Code 39?
Code 39从未进入零售收银领域——那始终是UPC和EAN-13的地盘。但在条形码永远不需要离开建筑物的每一个行业中,Code 39的简洁性以及几乎所有扫描仪都能识别的特点,使它保持了长达五十年的日常使用:
国防与政府物流(LOGMARS)
LOGMARS(自动化标记与读取符号的物流应用)是直接基于Code 39构建的美国国防部标准,用于追踪军事物资和装备。
汽车零部件追踪
美国汽车产业行动集团(AIAG)将Code 39确立为美国汽车行业零件容器标签的标准,至今仍用于确认工厂收到的每一批货物。
航空航天与医疗保健
飞机零部件追踪以及医院/医疗设备标签都出于与国防领域相同的原因依赖Code 39:在扫描出错绝不能接受的环境中,经过数十年验证的扫描仪兼容性。
姓名徽章与固定资产标签
会议徽章、员工工牌以及内部设备资产标签很少需要Code 128那样的高数据密度——在使用基础硬件以奇怪角度扫描时,Code 39更宽、容错性更强的条纹反而是一种优势。
如果这些描述听起来更像您的仓库而非零售货架,也值得查看我们的仓库储物格标签指南——许多设施会将Code 39用于旧有资产标签,同时使用Code-128处理活跃的SKU。有两个应用值得单独深入了解:将车辆识别码(VIN)以Code 39编码用于汽车零部件,以及若Code 39的低密度成为您标签尺寸的痛点,可参考Code 93与Code 128的完整对比。
3. Code 39 与 Code 128 对比
这是卖家和第三方物流公司在建立新的标签流程时最常问到的问题。两者都能编码字母和数字——区别在于密度,而这通常会替你决定答案。
| 特性 | Code 39 | Code-128 (物流) |
|---|---|---|
| 数据密度 | Low — ~2x wider than Code 128 | High — compact, ideal for small labels |
| 校验位 | Optional (self-checking) | Built into the symbology |
| 字符集 | A-Z, 0-9, 7 symbols (uppercase only) | Full ASCII, upper and lowercase |
| 最适用场景 | Defense, automotive, badges, legacy scanners | Amazon FBA, modern warehouse SKUs |
简而言之:如果您可以自由选择,只需要为现代仓库或亚马逊FBA货件找到密度最高、最灵活的标签,请使用Code 128。如果某项标准、某位客户或某台老旧设备明确要求使用Code 39,那就使用Code 39——与这一要求对抗,通常比多占用一点标签空间的代价更高。
4. 可选的Mod 43校验位详解
由于Code 39具备自校验性,大多数实现方式完全省略了校验位。但一些标准——包括LOGMARS——仍要求使用校验位以增加一层验证保障。它被称为模43(Mod 43)校验位,与EAN-13的校验位不同,您可以在一分钟内手工计算出来。
实例演示:编码“CODE39”
- 每个Code 39字符都有一个固定的数值(0–9 = 0–9,A–Z = 10–35,然后7个符号 = 36–42)。
- 对于“CODE39”:C=12,O=24,D=13,E=14,3=3,9=9。
- 将数值相加:12 + 24 + 13 + 14 + 3 + 9 = 75。
- 除以43并保留余数:75 ÷ 43 = 1 余 32。
- 使用同一张表将32转换回字符:数值32 = W。
结果:“CODE39”的Mod 43校验字符为W。
在生产环境中,您几乎从不需要手动计算——只要打开该选项,任何靠谱的生成器都会自动计算并附加校验位。理解它的用途主要在于故障排查:如果某个条形码未通过LOGMARS验证,错误的校验位是首先要排除的原因之一。
5. 为什么无法扫描?
与大多数条码符号系统相比,Code 39的容错性较好,但以下这五个问题是我们所听说的绝大多数实际扫描失败案例的根源:
- 缺少起始/终止星号。 如果编码字符串不包含起始和终止的星号,大多数软件根本不会生成有效的Code 39符号——这通常是数据录入问题,而非打印问题。
- 源数据末尾存在多余空格。 电子表格单元格末尾的多余空格是Code 39中的有效字符,因此会被悄悄编码进去——生成的条形码在技术上是正确的,但与您预期的值并不匹配。
- 打印尺寸过小。 Code 39需要大约2:1到3:1的宽窄条比例才能保持可靠可读。如果标签缩小得过多,这一比例就会被破坏,相邻的条纹会开始相互粘连。
- 静区空间不足。 扫描仪需要在条形码两侧留有空白边距——经验法则是至少为最窄条纹宽度的10倍——否则无法可靠地识别代码的起止位置。
- 在未配置的扫描仪上使用了扩展Code 39。 如果您使用小写字母或额外符号(扩展/全ASCII Code 39),扫描仪必须经过明确设置才能解码——否则它只会读取原始的字符对,而非预期的文本。
6. 批量生成Code 39
如果您需要为多个物品贴标签,将每个Code 39数值逐一输入基于字体的生成器是无法规模化的。以下是快捷方法:
导出您的清单
将您的资产标签、零件编号或ID清单整理为单列的Excel或CSV文件——无需特殊格式。
打开工作区并选择Code 39
将文件拖放到我们的
下载适用于您的Zebra、Rollo或Dymo打印机的连续、尺寸正确的PDF卷——静区和条纹比例均已为您处理好,从而在问题发生之前就解决了上文所述的大多数扫描问题。导出可直接打印的PDF卷
所有操作均在您的浏览器中于客户端完成——您的零件编号和资产清单绝不会接触我们的服务器。如果您想先了解完整工作流程,Excel转条形码指南详细介绍了列的设置以及常见的格式错误。
7. 常见问题
Code 39条形码需要校验位吗?
Code 39和Code 93有什么区别?
为什么我的Code 39条形码无法扫描?
Code 39可以编码小写字母吗?
Code 39已经过时了吗,还是如今仍在使用?
对于相同的数据,Code 39条形码比Code 128大多少?
订阅物流通讯
每月两次获取关于仓库自动化、硬件评测和供应链扩展的实用建议。绝不发送垃圾邮件。
Sohail Ahmad
首席系统架构师与高级平面设计师
Sohail常驻沙特阿拉伯利雅得,致力于弥合数字软件架构与实体物流之间的关键差距。他专注于全流程电商自动化、物联网追踪系统,以及面向国际品牌和区域第三方物流公司的B2B生成工作流工程。