Чтение строк 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, я получаю два символа, как два примера ниже:

буква & # xE1 ;. UTF код E1 (шестнадцатеричный). Я получаю 195, а затем 161

буква & # xF4 ;. UTF код F4 (шестнадцатеричный). Я получаю 195, а затем 180

У меня вопрос, есть ли способ для меня читать символы UTF напрямую. Я нашел несколько решений в Интернете, но ни одно из них не подходит для MIDP.

Ответы на вопрос(1)

Решение Вопроса

Вместо чтения байтов читайте символы. ИспользуйтеAPI InputStreamReader конвертировать байты в символы и запускать кодировщик 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");

Ваш ответ на вопрос