在蓝牙打印机上打印UTF-8字符

Mor*_*ten 4 java android bluetooth zebra-printers

我有一个应用程序,我应该能够在蓝牙打印机 Zebra iMZ320 上进行打印,但我在使用 UTF-8 特定字符(\xc3\x86、\xc3\x98 或 \xc3\x85)时遇到一些问题。

\n\n

我按如下方式连接到设备:

\n\n
        BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(macAddr);\n        Method m = device.getClass().getMethod("createRfcommSocket", new Class[] { Integer.TYPE });\n        bSocket = (BluetoothSocket)m.invoke(device, new Object[] { Integer.valueOf(1) });\n        bSocket.connect();\n        outStream = bSocket.getOutputStream();\n        inStream = bSocket.getInputStream();\n
Run Code Online (Sandbox Code Playgroud)\n\n

套接字打开后,我将在 CPCL 中发送数据:

\n\n
        String cpclData = "! U1 SETLP 5 2 24 \\r\\n"+text+"\\r\\n";\n        outStream.write(cpclData.getBytes());\n        outStream.flush();\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是当我尝试打印上述字符时,它会写一些异常字符。

\n\n

我联系了 Zebra,他们的一位工程师写道,我应该尝试以下操作:

\n\n
! 0 200 200 80 1 \nIN-MILLIMETERS \nJOURNAL \nCENTER \nCOUNTRY NORWAY\nTEXT 4 0 0 8 COUNTRY IS NORWAY OR DENMARK\nTEXT 4 0 0 15 \xc3\x86 \xc3\x98 \xc3\x85\nPRINT\n
Run Code Online (Sandbox Code Playgroud)\n\n

但它绝对没有任何作用。

\n

小智 5

如果您尝试从 Android 设备打印标签,这很简单;当您使用“ISO-8859-1”编码写入数据时,请查看:

String cpclData = "! U1 SETLP 5 2 24 \r\n"+text+"\r\n";
outStream.write(EncodingUtils.getBytes(cpclData, "ISO-8859-1"));
outStream.flush();
Run Code Online (Sandbox Code Playgroud)