Javascript Zebra打印机中的编码日期

Javascript Zebra打印机中的编码日期,javascript,encoding,printing,zebra-printers,Javascript,Encoding,Printing,Zebra Printers,我需要在我的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,27

我需要在我的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.
有这方面经验的人,请提供帮助。

ZPL手册(第171页)解释说,此命令正在下载翻译表,以帮助将字体转换为unicode:。数字(27848)是字体可下载格式的大小。这些表格可以作为字体包的一部分在下载。你想用什么字体


此外,虽然这不能解决打印机关闭的问题,但您应该以“^XZ”结束ZPL命令。这是打印机用来表示标签/作业/命令结束的命令。

jason.zissman,感谢您提供有关新文档的链接。我发现那里有一辆自行车。我从JSP()发布js代码:

qz.append("^XA");
qz.append("^CWX,E:TT0003M_.FNT^FS");
qz.append("^CI28");
qz.append("^FO50,400^AX,80,70^FDCyrillic: ЖЛЗ^FS");
qz.append("^XZ");
qz.print();
但打印机只打印“西里尔语:”。有什么问题吗?
当我从文件中打印此文件时,一切正常,从jsp打印时,此文件无效。

请尝试强制Java小程序使用西里尔语:
qz.setEncoding(“cp1251”)
qz.setEncoding(“windows-1251”)
除非打印机本机支持UTF-16,否则
qz.setEncoding(“UTF-16”)

更新:在QZ托盘的较新版本中,语法是
QZ.configs.create(“我的打印机”{encoding:'UTF-8'})

另外,请确保在网页中定义

编辑:这里详细解释了导致这种情况的原因:

Java有一个习惯,即假设您想要使用什么字符集,通常是cp1252(Windows)或UTF-8(*nix)。根据打印机期望的编码(以及它支持的编码),Java首先需要在发送之前将这些字符/命令翻译成合适的等效字符/命令。Java 7支持的编码的完整列表可用

在qz bug跟踪器上提出了一个关于希腊字符支持的非常类似的问题。诀窍是告诉Java和打印机正在使用哪种语言/字符编码

最后,我遇到了一些场景,其中html/js文件上的BOM标志(字节顺序标记)导致了不希望的结果。在这种情况下,JavaScript在发送到Java之前就知道文档的编码和翻译。我使用记事本++打开/关闭UTF-8 BOM

此外,这里还有qz错误报告的链接,该报告涉及不同的打印语言(ESCP而不是ZPL),但有一个类似的症状,即Java的输出被错误地转置到打印机上。


-Tres

我尝试使用E:TT0003M_uu3;.FNT打印俄文符号。这些符号我从jsp以utf8格式发送到打印机,但打印机理解ZPL代码,不理解俄语符号。这就是为什么我尝试使用utf16。你能详细描述一下怎么做吗?由于实际的独立ZPL文件可以工作,我只能相信库(qz)不支持传输.qz使用的字符。如果不是手动指定,则使用JavaScript。为了确保JavaScript不会首先对其进行翻译,我通常建议使用转义十六进制版本的字符进行故障排除。e、 g.
qz.append('λ')
;与
qz.append('\u03bb')相同,但后者适用于非UTF网页。JavaScript->Java->OS中存在编码转换的层次,因此在调试阶段,数据越显式越好。非常感谢!我设置了编码qz.setEncoding(“UTF-16”)并且成功了。我还收到了关于
修复编码问题的报告。添加到原始帖子。:)