13

这个问题不是关于“最佳”条码库推荐,我们在不同平台上使用各种产品,需要一种简单的方法来验证给定条码是否正确(根据其规范)。

我们发现了不同的条形码库和Internet 上的免费在线条形码生成器呈现不同的条形码的情况。例如,新版本的 Delphi 报告库将 Code128 中的非数字字符输出为“0”,或者在文本区域中直接跳过它们。在我们进行迁移之前,我们想检查这些更改是否是由新库中的一个损坏的实现引起的,以便我们可以将此作为错误报告给作者。

我们主要需要带有 A/B/C 子码的Code128和 UCC/EAN-128。

到目前为止,我检查的在线资源是:

它们也显示出不同的结果,例如支持逗号或加号等字符,至少在人类可读的文本中是这样。

4

2 回答 2

11

对于 Code128,没有一个正确答案。如果您使用 Code128-A,您可以获得与 Code128-C 不同的结果。通过结果,我的意思是它的外观。以“803150”为例。在 Code128-A 中,您需要 6 个字符(+ 开始、校验和、停止)来表示这个数字。Code128-C 仅由数字组成,因此您可以将两位数字压缩为一个字符。因此,您只需要 3 个字符(+ 开始、校验和、停止)来表示相同的数字。条形码看起来会有所不同(在这种情况下 A 更长),但如果您扫描它们,它们都会给出正确的数字。

此外,Code128 不必只是 A、B 或 C。您实际上可以组合不同的子集。这对于像“US123457890”这样的情况很常见,其中“US”使用 Code128-A 或 B,其余数字使用 Code128-C。这有时称为 Code-128 Auto,或简称为 Code-128。结果是宽度上的“压缩”条形码。您可以使用 A/B 表示相同的数据,但同样会为您提供更长的条形码。

取两个在线生成器:

我推荐第一个,您可以在其中选择 Auto/A/B/C。这是说明差异的示例图像:

替代文字

在 IDAutomation 上,Auto 是默认值,而 A 是 Barcodes-Inc 上的默认值。两者都是正确的,您只需要注意比较输出时选择的子集。我还推荐在开发中使用条形码阅读器来测试输出。此外,请参阅此页面以比较不同子集与 ASCII 值。我还发现grandzebu.net很有用,它有一个免费的 Code128 字体,你也可以使用它。

听起来你的 Delphi 库总是使用 Code128-C,因为它只能表示这个子集中的数字。

于 2010-03-20T11:47:23.987 回答
0

为什么不直接扫描它们,看看有什么结果呢?

于 2010-03-20T20:06:30.933 回答