【问题标题】:Printer ZebraZ4MPlus don't print Russian Cirillyc character打印机 Zebra Z4MPlus 不打印俄语西里尔字符
【发布时间】:2014-01-13 15:14:51
【问题描述】:

我尝试使用小程序“qz-print”从 JavaScript 打印一些俄语文本。我的js代码:

                if (qz !== null) {
                    qz.append("^XA");
                    qz.append("^CWX,E:TT0003M_.FNT^FS");
                    qz.append("^CI29");
                    qz.append("^LH5, 80");
                    qz.append("^FO160,220^AUR,5,10^FD" + Черноморец + "^FS");
                    qz.append("^XZ");
                    qz.print();
                }

在这个变体中,我使用 zpl 编码 CI29。但是此代码后我的打印机脱机...仅帮助重新启动计算机和打印机。

当我发送下一个代码时 - 一切正常:

                    qz.append("^XA");
                    qz.append("^LH5, 80");
                    qz.append("^FO120,110^ATR,5,10^FD" + Черноморец + "^FS");
                    qz.print();

但是打印机会打印出奇怪的字符而不是“Черноморец”,类似于 KOI8-R。

谁知道如何用俄语打印?

【问题讨论】:

    标签: javascript printing zebra-printers


    【解决方案1】:

    请看这个帖子: Encoding date in Zebra printer

    解决方案分为4部分,其中包括:

    1. 正确的转换表(特殊的 ZPL 命令)例如^CI17^CI14
    2. 如果您想直接使用 Unicode 字符,您的 JavaScript 文件的文档编码将被编码为 UTF-8(可选地,您可以使用 Unicode 转义格式,但对于大多数程序员来说,它不是必需的,因为 .js 文件已经是 UTF-8默认)
    3. 告诉 Java(在本例中为 qz)使用正确的编码。对前一个人有用的是qz.setEncoding("UTF-16");,尽管 CP-1251 可能也能成功。 更新:在较新版本的QZ Tray中,语法为qz.configs.create("My Printer", { encoding: 'UTF-8' });
    4. 如果数据来自服务器(AJAX 等),请确保该内容的默认输出也配置正确(Apache、PHP 等)。 http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8

    这个特别难的是字符翻译和字体可以在你不知情的情况下切换三遍。


    第一个编码问题

    JavaScript 将默认使用 .js 文件本身的编码(通常是 UTF-8,但也可以是 ANSI 等。Notepad++ 将在“编码”菜单选项中显示此内容)。


    二次编码陷阱

    Java 将在内部使用 UTF-16,但随后不会向用户发出任何警告,Java 将在写入“原始”时进行字符转换,在 Windows 上将转换为 CP-1252,丢弃许多 UTF- 16 个字符。仅当编码具有可映射的字符(即 CP-1251 有许多西里尔字符可以很好地与 Unicode 相互映射)时,这种转换才非常好。出于这个原因,qz 故意在日志中回显一条关于默认编码的消息,一旦激活,您应该在 Java 控制台中查看该消息: INFO: Current printer charset encoding: windows-1252


    第三个编码问题

    根据我的经验,大多数打印机都支持西里尔字母,但根据打印机的使用年限,可能需要兼容的代码页或上传的字体等,这些都是供应商非常具体的。在收据打印机的情况下,代码页非常不一致。幸运的是,Zebra 为这些问题提供了出色的技术支持和快速解决方案。


    我们是如何解决这个问题的

    在上面链接的线程中,一位 Zebra 开发人员 (Jason) 帮助完成了打印机部分,一位 QZ 开发人员 (我自己) 帮助完成了 Java 部分。 Jason 直接给我发电子邮件来帮助解决这个问题。

    我希望这个解释对您和其他许多人有所帮助。如果它解决了您的问题,请将此主题标记为已回答,或者如果您对原始打印还有其他问题,请联系 qz 社区支持。

    -特雷斯

    【讨论】:

      【解决方案2】:

      我有一本旧书。但是以 ^CI29 开头的行您可以尝试更改为 ^CI17 (Unicode) 或 ^CI14 (16 位 Unicode 编码字体)。

      您可能还需要使用 Zebra 网站上的 Z 工具获取字体,然后手动将它们添加到打印机。祝你好运。

      【讨论】:

      • 谢谢。你是绝对正确的 :) 但我已经做到了,但没有成功。
      【解决方案3】:

      我发现那里有 CI28 编码。我从 JSP () js-code 发布:

      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();
      

      但打印机只打印“Cyrilic:”。有什么问题?请帮忙,谁知道。 当我从文件打印此代码时 - 一切都很好,而从 jsp 打印时 - 不起作用。

      【讨论】:

        猜你喜欢
        • 2014-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多