У меня есть приложение для Android, и я пытаюсь использовать принтер Bluetooth для печати текста. Проблема в том, что я не могу правильно напечатать любой нелатинский символ.
У меня есть этот код:
public void printTaggedText() throws IOException {
try {
byte[] theText = "Întregul text în românește țș".getBytes("utf8 ");
for (byte bit : theText) {
System.out.println("Reached: " + Integer.toHexString(bit));
}
this.printText(theText);
} catch (Exception e) {}
}
Я поставил для проверки правильности кодировки, поэтому я посмотрел на результирующие значения, и они, кажется, в порядке (я преобразовал их обратно в строку и получил тот же текст).
Это функция printText:
public void printText(byte[] b) throws IOException {
synchronized(this) {
this.write(b);
}
}
А это напиши:
public synchronized void write(int b) throws IOException {
this.write(new byte[]{(byte)b});
}
public synchronized void write(byte[] b) throws IOException {
this.write(b, 0, b.length);
}
public synchronized void write(byte[] b, int offset, int length) throws IOException {
this.mBaseOutputStream.write(b, offset, length);
}
Результат выглядит так:
Я знаю, что принтер поддерживает эти символы, потому что он печатает их правильно с помощью другого приложения.