Я пытаюсь напечатать арабскую строку в escpos из android java. Но печатаются только некоторые китайские иероглифы. Мой принтер поддерживает арабский язык.
Вот мой код
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();
}
}
Будет полезно, если кто-то может предложить какой-либо пример кода.
Приветствие,
Ваша программа замечательная и работает отлично.
Проблема заключается в кодировке символов, переданной на принтер. Где-то в сети от вашей программы до принтера кодировка UTF-8 (java по умолчанию) конвертируется в другую кодировку.
Проверьте кодировку принтера по умолчанию, возможно, ее можно изменить. Если не удается изменить кодировку принтера по умолчанию, измените кодировку Java соответствующим образом.
Кроме того, если у вас есть прокси/фильтр/брандмауэр в сети, он также может изменить кодировку.
Измените кодировку принтера по умолчанию с помощью настроек принтера операционной системы по умолчанию.
Изменить кодировку Java ответил здесь.
Не могли бы вы объяснить, как я могу изменить кодировку по умолчанию?