ESC/POS ПЕЧАТЬ АРАБСКИХ СИМВОЛОВ на термопринтере

Я пытаюсь напечатать арабскую строку в 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();
    }
}

Будет полезно, если кто-то может предложить какой-либо пример кода.

2
0
2 450
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Приветствие,

Ваша программа замечательная и работает отлично.

Проблема заключается в кодировке символов, переданной на принтер. Где-то в сети от вашей программы до принтера кодировка UTF-8 (java по умолчанию) конвертируется в другую кодировку.

Проверьте кодировку принтера по умолчанию, возможно, ее можно изменить. Если не удается изменить кодировку принтера по умолчанию, измените кодировку Java соответствующим образом.

Кроме того, если у вас есть прокси/фильтр/брандмауэр в сети, он также может изменить кодировку.

Обновлять

Измените кодировку принтера по умолчанию с помощью настроек принтера операционной системы по умолчанию.

Изменить кодировку Java ответил здесь.

Не могли бы вы объяснить, как я могу изменить кодировку по умолчанию?

Farah Abbas 01.05.2019 20:51

Другие вопросы по теме