1

维基百科上的 DataMatrix 文章提到它默认只支持 ASCII。它还提到了 Base256 编码的特殊模式,它应该能够表示任意字节值。

然而,到目前为止,我尝试的所有条形码生成器库都支持以字符串形式输入数据,并显示 ASCII 以外的字符的错误(Onbarcode 和 Barcodelib)。也无法输入 Base256 模式所需的 byte[]。

是否有支持 Base256 模式的条码生成器库?(最好是有支持的商业图书馆)

将 unicode 字符串转换为 Base64 并在扫描数据后从 base64 解码是一种方法,但还有其他方法吗?

4

1 回答 1

0

有可能,尽管它有一些陷阱:1)它取决于您编写应用程序的语言(跨编程语言的不同 DM 库有不同的绑定。例如,*nix- 中有一个非常常见的库相关环境(Maemo/MeeGo/Tizen 上的几乎所有条码扫描器/生成器、一些 WinPhone 应用程序、KDE ​​事物等都在使用它)称为 [libdmtx][1]。据我测试,编码和解码包含unicode 很好,但它没有正确标记编码的消息(“嘿,其他读者,这里是 unicode!”),因此,其他库,如 [ZXing][2],以及许多专有扫描仪,解码该 unicode ASCII 格式的消息。

到目前为止,正如我与 [ZXing][2] 作者所讨论的,正确的标记可能是一个 ECI 段(0d241 字节作为第一个代码字,然后是“0d26”字节(用于 UTF-8))。虽然这是理论上的解决方案,但基于 QR 码的这种解决方案,并且没有以任何方式对 DataMatrix 进行标准化([libdmtx][1] 和 [ZXing][2] 都不支持使用这种标记进行编码,尽管, 这样有一些步骤。

所以,TL;DR:如果您打算仅在您正在编写的应用程序之间使用生成的代码(带有 unicode 消息)——您可以自由地使用 [libdmtx][1] 进行双方的编码和解码,它会工作正常 :) 如果没有 - 尝试在您的语言上查找 [zxing][2] 端口(并确保该端口支持编码)。

1:github.com/dmtx/libdmtx

2:github.com/zxing/zxing

于 2015-01-14T21:38:49.643 回答