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

我们发现不同的条形码库对条形码的呈现方式不同,并且 免费在线条形码生成器 互联网上。例如,新版本的 Delphi 报告库将 Code128 中的非数字字符输出为“0”,或者只是在文本区域中跳过它们。在进行迁移之前,我们想要检查这些更改是否是由新库中的实现损坏引起的,以便我们可以将其作为错误报告给作者。

我们主要需要 代码128 以及带有 A/B/C 子代码的 UCC/EAN-128。

目前我查到的网上资源有:

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

有帮助吗?

解决方案

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

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

采取两个在线生成器:

我推荐第一个,您可以在自动/A/B/C 之间进行选择。以下是说明差异的示例图像:

alt text

在 IDAutomation 上,Auto 是默认值,而 Barcodes-Inc 上的默认值是 A。两者都是正确的,您只需要在比较输出时小心选择的子集即可。我还推荐在开发中使用条形码阅读器来测试输出。另请参阅 这一页 用于将不同子集与 ASCII 值进行比较。我还发现 格兰泽布网 有用,它有一个免费的 Code128 字体,您也可以使用。

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

其他提示

为什么不直接扫描它们,看看会返回什么?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top