首页 > 解决方案 > 设置字符代码表以在 ESC/POS 打印机中打印非拉丁字符

问题描述

我有一个 Android 应用程序,我正在尝试用它打印一些包含非拉丁字符的文本。

我正在使用此代码向ESC t n打印机发送命令:

 byte[] buf = new byte[]{0x1B, 0x74, (byte)2}; // 2 is the codetable for PC850: Multilingual
 this.mBaseOutputStream.write(buf);

然后,我尝试像这样打印我的代码:

this.mBaseOutputStream.write("Лорем ăîîîîîîă".getBytes("cp850"));

但我得到的非拉丁字符都是奇怪的符号。那么我做错了什么?

标签: javaandroidprintingescpos

解决方案


不确定这是一个答案,但希望这会让事情开始。还需要一点空间来解释...

看起来代码页 850 没有所需的字符。离线检查的一种简单方法是转换回String. 例如:

System.out.println(
        new String("Лорем ăîîîîîîă".getBytes("cp850"), "cp850"));
--> ????? ?îîîîîî?

显然只有î那里可用。

您可能需要对替代代码页进行一些实验 - 这是什么类型的打印机?

这里的一些测试表明示例字符串可能需要多个代码页,但其他人可能更了解:

System.out.println(
        new String("Лорем ăîîîîîîă".getBytes("cp852"), "cp852"));
--> ????? ăîîîîîîă
System.out.println(
        new String("Лорем ăîîîîîîă".getBytes("cp855"), "cp855"));
--> Лорем ????????

推荐阅读