我使用Zebra QL320 plus打印机。字体是从Win7(sys。编码CP1251)加载的。 当我通过蓝牙从Android发送文本到俄语的打印机时:
! 0 200 200 200 1
ENCODING UTF-8
TEXT 14 0 20 80 Привет мир
PRINT
我的结果是这样的:
РџСЂРёРІРμС,РјРёСЂ
我如何解决这个问题?
答案 0 :(得分:1)
俄罗斯的编码是什么?你是用Java发送这个字符串吗?您必须使用正确的编码形成您的字符串。尝试调试应用程序并从正在发送的字符串中获取字节,并确保字节正确
答案 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)