我需要将 Zebra M4Plus 打印机中的“日期字段”从 UTF-8 编码为 UTF-16。为此,我需要使用“所需的翻译表”。在文档中我发现了这个:
~DER:JIS.DAT,27848,300021213001...
但我不知道 JIS.DAT 是什么,为什么是 27848。
这是我的代码示例:
qz.append("^XA");
qz.append("^FO160,635");
qz.append("^A@R,30,30,E:TT0003M_.FNT");
qz.append("~DER:.DAT,27848,Данные для вывода^FS"); - it not work. Printer go to offline.
谁有这方面的经验,请帮忙。
最佳答案
请尝试强制 Java 小程序使用西里尔字母:qz.setEncoding("cp1251");
或 qz.setEncoding("windows-1251");
除非打印机本身支持 UTF-16,否则 qz.setEncoding("UTF-16");
更新:在较新版本的 QZ Tray 中,语法为 qz.configs.create("My Printer", { encoding: 'UTF-8' });
此外,请确保定义 <meta charset="utf-8">
在您的网页中。
编辑:这里有详细的原因解释:Printer ZebraZ4MPlus don't print Russian Cirillyc character
Java 习惯于假设您要使用的字符集,通常是 cp1252 (Windows) 或 UTF-8 (*nix)。根据打印机期望的编码(以及它支持的编码),Java 首先需要在发送之前将这些字符/命令转换为合适的等价物。提供了 Java 7 支持的编码的完整列表 here .
关于希腊字符支持,qz bug tracker 上提出了一个非常相似的问题。诀窍是告诉 Java 和打印机正在使用哪种语言/字符编码。
最后,我遇到过 html/js 文件上的 BOM 标志(字节顺序标记)导致不良结果的情况。在那种情况下,JavaScript 在发送到 Java 之前就知道文档的编码和翻译正在发生。我使用 Notepad++ 打开/关闭 UTF-8 BOM。
此外,这里是 qz 错误报告的链接,它与不同的打印语言(ESCP 而不是 ZPL)有关,但具有类似的症状,即 Java 的输出在他的打印机上被错误地转换。 https://code.google.com/p/jzebra/issues/detail?id=204#c10
-特雷斯
关于javascript - Zebra 打印机中的编码日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21114274/