我正在尝试从android java在escpos中打印阿拉伯字符串。但是只打印一些汉字。我的打印机支持阿拉伯语。
这是我的代码
private void printArabic() throws IOException {
String print ="الجحيم";
ByteBuffer init = ByteBuffer.allocate(2);
init.put((byte) 0x1B);
init.put((byte) 0x25);
sendData(init.array(), outputStream);
ByteBuffer dataToPrint = ByteBuffer.allocate(print.length());
dataToPrint.put(print.getBytes("cp864"));
sendData(dataToPrint.array(), outputStream);
}
private void sendData(byte[] buffer, OutputStream os) throws IOException
{
try {
ByteBuffer byteBuffer = ByteBuffer.wrap(buffer);
os.write(byteBuffer.array());
os.flush();
// tell the user data were sent
} catch (Exception e) {
e.printStackTrace();
}
}
如果有人可以建议任何代码示例,这将很有帮助。
答案 0 :(得分:1)
问候,
您的程序很棒,效果很好。
问题是传递给打印机的字符编码。 从程序到打印机的网络中的某个位置,UTF-8编码(java默认)将转换为其他编码。
检查打印机默认编码,可能可以更改。 如果无法更改默认打印机编码,请相应地更改java编码。
如果网络中有代理服务器/过滤器/防火墙,它也可能会更改编码。
使用操作系统打印机的默认设置更改默认打印机编码。
更改已回答here的Java编码。