Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с кодировкой HTML-страницы, Не получается декодировать 
V
    Опции темы
soulcub
Дата 3.3.2012, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

Репутация: нет
Всего: 2



Пытаюсь вычитать нужную мне инфу с украинского сайта. Но никак не выходит вывести кириллицу в нормальном виде. Может я как-то не так декодирую?
Код

package MPs;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;


public class MPs {
    
    public void startParsing(String Url, String Tag, boolean showResult) {
        HttpURLConnection connection = null;
        BufferedReader rd= null;
        StringBuilder sb = null;
        String line = null;
        URL serverAddress = null;
        boolean successParse = false;
        
        String levelUpUrl = Url.substring(0, Url.lastIndexOf("/"));
        
        try {
            
            serverAddress = new URL(Url);
            connection = null;
            
            connection = (HttpURLConnection)serverAddress.openConnection();
            connection.setDoOutput(true);
            connection.setReadTimeout(10000);
            connection.setRequestProperty("Content-type", "text/html;charset=windows-1251"); //пытался в хедер впихнуть кодировку
            
            connection.connect();
            
            rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            sb = new StringBuilder();
            
            while ((line = rd.readLine()) != null)
            {
                if(line.startsWith(Tag)) {
                    if(showResult) {
                        String a = "�� �����"; // это пример той строчки, которая у меня вычитывается
                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
                        baos.write(line.getBytes());
                        System.out.println("After -> " + baos.toString("Cp866"));
                        System.out.println("After -> " + baos.toString("windows-1252"));
                        System.out.println("After -> " + baos.toString("windows-1251"));
                        System.out.println("After -> " + baos.toString("Cyrillic"));
                        System.out.println("After -> " + baos.toString("ISO-8859-1"));
                        System.out.println("After -> " + baos.toString("UTF-16"));
                        System.out.println("After -> " + baos.toString("US-ASCII"));
                        System.out.println("After -> " + baos.toString("UTF-16BE"));
                        System.out.println("After -> " + baos.toString("UTF-16LE"));
                        System.out.println("After -> " + baos.toString("UTF-32"));
                        
                        line = line.substring(line.lastIndexOf("\">")+2, line.lastIndexOf("</a>"));
                        System.out.println(line + ", ");
                        successParse = true;
                    }
                    else {
                        line = levelUpUrl + "/p_deputat" + line.substring(line.lastIndexOf("?"), line.lastIndexOf("\""));
                        new MPs().startParsing(line, "��. �����:", true);
                    }
                }
            }
            if(!successParse) {
                System.out.println(Url);
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        finally
        {
            connection.disconnect();
            rd = null;
            sb = null;
            connection = null;
        }
    }
}


В консоль выводит всё что угодно, кроме того что мне надо.

Цитата

After -> я┐╜я┐╜. я┐╜я┐╜я┐╜я┐╜я┐╜: <div class="topTitle" style="display: inline"><a href="mailto:[email protected]">[email protected]</a></div><br>
After -> ï¿½ï¿½. �����: <div class="topTitle" style="display: inline"><a href="mailto:[email protected]">[email protected]</a></div><br>
After -> пїЅпїЅ. пїЅпїЅпїЅпїЅпїЅ: <div class="topTitle" style="display: inline"><a href="mailto:[email protected]">[email protected]</a></div><br>
After -> яПНяПН. яПНяПНяПНяПНяПН: <div class="topTitle" style="display: inline"><a href="mailto:[email protected]">[email protected]</a></div><br>
After -> ï¿½ï¿½. �����: <div class="topTitle" style="display: inline"><a href="mailto:[email protected]">[email protected]</a></div><br>
After -> 뷯뾽⸠뷯뾽뷯뾽봺‼摩瘠捬慳猽≴潰呩瑬攢⁳瑹汥㴢摩獰污示⁩湬楮攢㸼愠桲敦㴢浡楬瑯㩁扤畬汩渮佬敫獡湤牀牡摡⹧潶⹵愢㹁扤畬汩渮佬敫獡湤牀牡摡⹧潶⹵愼⽡㸼⽤楶㸼扲�
After -> ������. ���������������: <div class="topTitle" style="display: inline"><a href="mailto:[email protected]">[email protected]</a></div><br>
After -> 뷯뾽⸠뷯뾽뷯뾽봺‼摩瘠捬慳猽≴潰呩瑬攢⁳瑹汥㴢摩獰污示⁩湬楮攢㸼愠桲敦㴢浡楬瑯㩁扤畬汩渮佬敫獡湤牀牡摡⹧潶⹵愢㹁扤畬汩渮佬敫獡湤牀牡摡⹧潶⹵愼⽡㸼⽤楶㸼扲�
After -> 뿯붿‮뿯붿뿯붿뿯㪽㰠楤⁶汣獡㵳琢灯楔汴≥猠祴敬∽楤灳慬㩹椠汮湩≥㰾⁡牨晥∽慭汩潴䄺摢汵楬⹮汏步慳摮䁲慲慤朮癯甮≡䄾摢汵楬⹮汏步慳摮䁲慲慤朮癯甮㱡愯㰾搯癩㰾牢�
After -> �����������������������������������������

--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
Flashed
Дата 3.3.2012, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 3.6.2010

Репутация: 1
Всего: 1



А какая ссылка? Тоже хочу попробывать...
PM MAIL   Вверх
mstalker26
Дата 3.3.2012, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 4.7.2009

Репутация: 4
Всего: 11



Работаете в Windows? Про вывод на консоль почитайте http://skipy.ru/technics/encodings_console_comp.html и http://skipy.ru/technics/encodings.html
--------------------
Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
PM   Вверх
soulcub
Дата 3.3.2012, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

Репутация: нет
Всего: 2



Цитата(mstalker26 @ 3.3.2012,  19:43)
Работаете в Windows? Про вывод на консоль почитайте http://skipy.ru/technics/encodings_console_comp.html и http://skipy.ru/technics/encodings.html

Windows. С выводом просто русского текста в консоль у меня проблем нету. У меня изначально от сайта приходит не очень красивое значение кириллицы.

Цитата(Flashed @ 3.3.2012, 16:50)
А какая ссылка? Тоже хочу попробывать...

Ссылка вот)

Добавлено @ 21:39
То есть фактически задача сводится к следующему:

Есть изначальная строка - ������� ��������� ����������
Нужно её превратить в русский текст.

Добавлено @ 21:45
Ну или, ели это невозможно(почему-то мне так кажется) то как-то надо заставить класс сразу принимать нормальные значения.

Это сообщение отредактировал(а) soulcub - 3.3.2012, 21:46
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
Flashed
Дата 3.3.2012, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 3.6.2010

Репутация: 1
Всего: 1



Цитата

Ну или, ели это невозможно(почему-то мне так кажется) то как-то надо заставить класс сразу принимать нормальные значения.

Думаю возможно. Ведь браузер справляется. А чем твой клиент хуже браузера.

Добавлено @ 00:03
Вот написал классический способ:
Код

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;


public class Main {
    public static void main(String _s[]){
        try {
            URL url = new URL("http://w1.c1.rada.gov.ua/pls/site/p_deputat_list");
            URLConnection conn = url.openConnection();
            
            InputStream is = conn.getInputStream();
            if(is!=null){
                int len =conn.getContentLength();
                byte[] data = new byte[len];
                int i=0;
                int b = 0;
                while(i<len){
                    b =  is.read();
                    data[i]= (byte) b;
                    i++;
                }
                System.out.println(new String(data));
                is.close();
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


Вся страница в консоль не поместилась, но краказябр вроде не было, проверь у себя его.

Это сообщение отредактировал(а) Flashed - 4.3.2012, 00:46
PM MAIL   Вверх
Flashed
Дата 4.3.2012, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 3.6.2010

Репутация: 1
Всего: 1



Вот попробовал еще по этой ссылке: "http://w1.c1.rada.gov.ua/pls/site/p_deputat?d_id=2524"
Страница загрузилась полностью в консоль Eclipse. Никаких чудных символов нету.

PM MAIL   Вверх
soulcub
Дата 4.3.2012, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

Репутация: нет
Всего: 2



Цитата(Flashed @ 4.3.2012,  00:44)
Вот попробовал еще по этой ссылке: "http://w1.c1.rada.gov.ua/pls/site/p_deputat?d_id=2524"
Страница загрузилась полностью в консоль Eclipse. Никаких чудных символов нету.

Твоюжмать запустил твой пример - нифига. Те же квадратики вместо кириллицы.. Сцуко, может в настройках еклипса/проекта дето-чёто?

Это сообщение отредактировал(а) soulcub - 4.3.2012, 02:13
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
Flashed
Дата 4.3.2012, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 3.6.2010

Репутация: 1
Всего: 1



У меня в нвстройках  эклипса  этого проекта (Project->Properties->Resourse->Text file encoding->other) стоит Cp1251
И нету галочки на Store the encoding of derived resources seperately (Хранить кодирование производных ресурсов отдельно).
Кстати когда меняю там кодировку на UTF-8, начинают приходить непонятные символы

Это сообщение отредактировал(а) Flashed - 4.3.2012, 13:10
PM MAIL   Вверх
soulcub
Дата 4.3.2012, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

Репутация: нет
Всего: 2



Неа( У меня то же самое стоит( А можешь архивчик с проектом скинуть?) Если будет то же самое - значит дело не в еклипсе..
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
mstalker26
Дата 4.3.2012, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 4.7.2009

Репутация: 4
Всего: 11



Сравните Language for non-Unicode programs в Contol Panel -> Region and Language -> Administrative
--------------------
Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
PM   Вверх
soulcub
Дата 4.3.2012, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

Репутация: нет
Всего: 2



Цитата(mstalker26 @ 4.3.2012,  17:21)
Сравните Language for non-Unicode programs в Contol Panel -> Region and Language -> Administrative

У меня русский там стоит

Это сообщение отредактировал(а) soulcub - 4.3.2012, 17:39
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
Flashed
Дата 4.3.2012, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 3.6.2010

Репутация: 1
Всего: 1



Вот проект c UTF-8 и краказябрами:

Это сообщение отредактировал(а) Flashed - 4.3.2012, 18:49

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  HttpTxt.rar 2,65 Kb
PM MAIL   Вверх
Flashed
Дата 4.3.2012, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 3.6.2010

Репутация: 1
Всего: 1



А вот он же с Cp1251 и нормальным текстом:

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  HttpTxt.rar 2,48 Kb
PM MAIL   Вверх
soulcub
Дата 4.3.2012, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

Репутация: нет
Всего: 2



Почему-то мой еклипс не воспринимает твои проекты) Но я пробовал разные кодировки в своих проектах - ноль на фазу. Вот такие вот ромбики - чтоб не делал.
user posted image
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
Flashed
Дата 4.3.2012, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 3.6.2010

Репутация: 1
Всего: 1



У меня Eclipse EE

Добавлено через 2 минуты и 8 секунд
Думаю, тебе надо попробовать скачать другою среду (даже тот же Eclipse EE) или вообще NetBeans. И попробовать в них.

Добавлено через 7 минут и 8 секунд
user posted image
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0996 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.