2

Zebra QL320 plus プリンターを使用しています。フォントは Win7 (sys. encoding CP1251) から読み込まれました。Bluetooth経由でAndroidからロシア語lngのプリンターにテキストを送信すると:

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

私は結果として次のようなものを持っています:

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

どうすればこれを修正できますか?

4

4 に答える 4

1

ロシア語はどのエンコーディングですか?これをJavaで文字列として送信していますか?適切なエンコーディングで文字列を作成する必要があります。アプリをデバッグして、送信する文字列からバイトを取得し、バイトが正しいことを確認してください

ここでSunのエンコーディングをチェックしてください

于 2012-03-16T16:40:55.263 に答える
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);
}

私が理解しているように、この例は、OS からエンコーディング CP1251 でロードされたフォントで動作します。

于 2012-03-19T15:35:54.600 に答える