Чтение строк UTF8 с сервера через http с использованием MIDP
Вопрос
Я хочу читать строки UTF-8 с сервера, которым я управляю, используя Java MIDP.Мой сервер отправляет данные UTF-8.Следующий код приближается:
c = (StreamConnection) Connector.open(
myServer, Connector.READ_WRITE);
InputStream is = c.openInputStream();
StringBuffer sb = new StringBuffer();
int ch;
while((ch = is.read()) != -1)
sb.append((char)ch + "->" + ch + "\n");
Я печатаю символ и его код для целей отладки.Я думаю, что здесь он читает символы ASCII, поэтому, когда у меня есть какой-то символ, код которого превышает 127, я получаю два символа, как в двух примерах ниже:
буква А.Код UTF E1 (шестнадцатеричный).Я получаю 195, а затем 161
буква О.Код UTF F4 (шестнадцатеричный).у меня 195, а потом 180
Мой вопрос в том, есть ли способ напрямую читать символы UTF.Я нашел несколько решений в Интернете, но ни одно из них не подходит для MIDP.
Решение
Вместо чтения байтов читайте символы.Используйте API-интерфейс ВходStreamReader для преобразования байтов в символы и запуска через кодировщик UTF-8.Он должен поддерживаться как часть профиля JavaME CLDC (JSR 30);вот куда указывает ссылка.
Попробуйте что-то вроде этого:
c = (StreamConnection) Connector.open(
myServer, Connector.READ_WRITE);
Reader r = new InputStreamReader(c.openInputStream(), "UTF-8");
StringBuffer sb = new StringBuffer();
int ch;
while((ch = r.read()) != -1)
sb.append((char)ch + "->" + ch + "\n");