java - 设置字符代码表以在 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"));
但我得到的非拉丁字符都是奇怪的符号。那么我做错了什么?
解决方案
不确定这是一个答案,但希望这会让事情开始。还需要一点空间来解释...
看起来代码页 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"));
--> Лорем ????????
推荐阅读
- scala - 如何更新数组列?
- android - 如何在单击按钮时使用 Glide 将图像保存到存储中?
- java - Java Servlet:强制初始化在 Payara 服务器启动时创建数据对象?
- apache-spark - Cassandra/Spark 读取性能
- php - 如何使用子字符串检查 $_POST
- javascript - 如何在将文本附加到 div 时将 onclick 中的文本引用为 onclick=" '+var+' "
- maven - javax.validation.BootstrapConfiguration.getClockProviderClassName()Ljava/lang/String 没有这个方法
- java - 在 Activity 中仅使用 1 个 AdView 或在片段中使用多个
- ios - 分享扩展iOS,如何在活动表视图中启用我的应用程序?
- python-3.x - 无法使用自定义距离函数加载带有 lambda 函数的 keras 模型