как установить кодировку строки символов в Android - PullRequest
0 голосов
/ 23 июня 2010

HI!У меня есть содержимое веб-страницы в кодировке ISO-8859-2.Как преобразовать поток, закодированный в этой кодировке, в кодировку UTF-8 Java.Я пытаюсь код ниже, но он не работает.Это портит некоторых персонажей.Есть ли другой способ сделать это?

    BufferedInputStream inp = new BufferedInputStream(in);
    byte[] buffer = new byte[8192];
    int len1 = 0;
    try{
        while ( (len1 = inp.read(buffer)) != -1 ) 
        {

            String buff = new String(buffer,0,len1,"ISO-8859-2");
            stranica.append(buff);
        } 

Ответы [ 2 ]

4 голосов
/ 23 июня 2010

Попробуйте с InputStreamReader и Charset:

InputStreamReader inp = new InputStreamReader(in, Charset.forName("ISO-8859-2"));
BufferedReader rd = new BufferedReader(inp);
String l;
while ((l = rd.readLine()) != null) {
   ...
}

Если вы получаете UnsupportedCharsetException, вы знаете, в чем ваша проблема ... Также, с помощью inp.getEncoding() вы можете проверить, какая кодировка действительно используется.

3 голосов
/ 23 июня 2010

Как конвертировать поток, закодированный в эта кодировка к Java в UTF-8

Неправильное предположение: Java использует UTF-16 для внутреннего использования, а не UTF-8.

Но ваш код на самом деле выглядит правильно и должен работать. Вы абсолютно уверены, что веб-страница на самом деле закодирована в ISO-8859-2? Возможно, его кодировка объявлена ​​неправильно.

Или, возможно, настоящая проблема не в показанном вами коде чтения, а в том, какой код вы используете для работы с результатом. Как и где проявляются эти «испорченные персонажи»?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...