如何仅使用原始 ZPL 对 Code128 条形码中的 TAB 字符进行编码

How to encode a TAB character in a Code128 barcode using only raw ZPL

过去,我们使用 ZPL 创建 Code39 条形码,中间使用类似以下内容编码的制表符:

*USERNAME$IPASSWORD*

我们使用的条码扫描器将中间的 $I 转换为 TAB。

现在我们需要做同样的事情,但使用 Code128。使用 Code39,所有文本都需要大写(除非您使用支持小写字母的 Code39Extended)。因为一些要编码的数据会是小写的,所以我们需要对大部分条码使用Code128 B,在中间切换到Code128 A来编码TAB字符,然后再回到Code128 B来完成最后一部分。

翻看《ZPL II编程指南》,应该很简单:

>:username>7{TAB}>6PA55w0rd

开头的>:设置子集为B,>7把子集改成A,>6把子集改回B。我遇到的问题(还没找到经过将近一周的搜索后的解决方案)是:如何仅使用文本对 TAB 字符进行编码?

在字段数据之前立即使用 ^FH(字段十六进制编码)命令。根据您的示例:

^FH_^FD>:username>7_09>6PA55w0rd^FS

其中下划线“_”用作转义字符,09 是制表符的十六进制值。

另请注意,如果所选转义字符出现在用户名或密码中,您也需要对其进行转义。

我尝试了 的建议,但不幸的是,它没有用。然而,它确实让我回顾了 ZPL II 编程指南,我发现了以下我之前忽略的内容:

Code 128, Subsets A and C are programmed in pairs of digits, 00 to 99, in the field data string.
...
In Subset A, each pair of digits results in a single character being encoded in the bar code...

因此,由于 73 相当于子集 A 中的 TAB,我尝试了以下操作:

>:username>773>6PA55w0rd

成功了!