Чтение строк UTF8 с сервера через http с использованием MIDP

StackOverflow https://stackoverflow.com/questions/1095902

  •  11-09-2019
  •  | 
  •  

Вопрос

Я хочу читать строки 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");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top