Печать данных на принтере Zebra с Android через Bluetooth - PullRequest
1 голос
/ 16 марта 2012

Я использую принтер Zebra QL320 plus.Шрифты были загружены из Win7 (sys. Кодировка CP1251).Когда я отправляю текст с Android через bluetooth на принтер на русском языке lng:

! 0 200 200 200 1
ENCODING UTF-8
TEXT 14 0 20 80 Привет мир
PRINT

В результате получается что-то вроде этого:1009 * Как я могу это исправить?

Ответы [ 4 ]

1 голос
/ 13 августа 2015

Я решил это, используя в OutputStream функции BluetoothSocket кодировку ISO-8859-1 для печати испанских символов.

      outputStream.write(cpclData.getBytes("ISO-8859-1")); 

Может быть, вы должны использовать специальный русский кодировку ISO

1 голос
/ 16 марта 2012

В какой кодировке русский? Вы отправляете это как строку в Java? Вы должны сформировать свою строку с правильной кодировкой. Попробуйте отладить приложение и получить байты из строки, которую вы отправляете, и убедитесь, что байты правильные

Проверьте кодировку Sun здесь

0 голосов
/ 15 октября 2017
BServico.write(new byte[] { 28, 46 }); //Cancels Chinese character mode

//TEST
for (int i = 0; i < 20; i++) {
    String text = String.format("%d - %s - çüáéíóúñåæø\n", i, Integer.toHexString(i));

    BServico.write(new byte[] { 0x1B, 0x74, (byte)i });

    try {
        BServico.write(text.getBytes("ISO-8859-1"));
    } catch (Exception ex) {
        //
    }
}

enter image description here Правильная кодовая страница для меня BServico.write (новый байт [] {0x1B, 0x74, 0x10 });

0 голосов
/ 19 марта 2012

Вот рабочий пример:

public void bluetoothSendData(String text){
    bluetooth_adapter.cancelDiscovery();
    if (socket_connected) {
        try {
            OutputStream o_stream = socket.getOutputStream();               
            o_stream.write(decodeText(text, "CP1251"));
            Log.i("emi", "Data was sended.");
        } catch (IOException e) {
            bluetoothCloseConnection();
            Log.i("emi", "Send data error: " + e);
        }
    } else {
        Log.i("emi", "Bluetooth device not connected.");
    }
}

private byte[] decodeText(String text, String encoding) throws CharacterCodingException, UnsupportedEncodingException{
    Charset charset = Charset.forName(encoding);
    CharsetDecoder decoder = charset.newDecoder();
    CharsetEncoder encoder = charset.newEncoder();
    ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(text));
    CharBuffer cbuf = decoder.decode(bbuf);
    String s = cbuf.toString();
    return s.getBytes(encoding);
}

Как я понимаю, этот пример будет работать в шрифтах, которые были загружены из ОС с кодировкой CP1251.

...