从Android通过蓝牙在Zebra打印机上打印数据

时间:2012-03-16 05:47:19

标签: android encoding zebra-printers

我使用Zebra QL320 plus打印机。字体是从Win7(sys。编码CP1251)加载的。 当我通过蓝牙从Android发送文本到俄语的打印机时:

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

我的结果是这样的:

  

РџСЂРёРІРμС,РјРёСЂ

我如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

俄罗斯的编码是什么?你是用Java发送这个字符串吗?您必须使用正确的编码形成您的字符串。尝试调试应用程序并从正在发送的字符串中获取字节,并确保字节正确

Check out the Sun encoding stuff here

答案 1 :(得分:1)

我已经在BluetoothSocket的OutputStream中使用ISO-8859-1编码来解决它,用于打印西班牙语字符。

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

也许你必须使用特殊的俄罗斯ISO字符集

答案 2 :(得分:0)

以下是工作示例:

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编码的内容。

答案 3 :(得分:0)

for word in text_list:
    new_dict[len(word)] = word

enter image description here     为我纠正代码页     BServico.write(new byte [] {0x1B,0x74, 0x10 });