Отображение символов без ASCII с использованием HttpClient - PullRequest
0 голосов
/ 23 декабря 2010

Итак, я использую этот код, чтобы получить весь HTML-код веб-сайта. Но я, кажется, не получаю не-ascii персонажей со мной. все, что я получаю, это бриллианты с вопросительным знаком.
символы, такие как: å, выглядит так:
Я сомневаюсь, что это из-за кодировки, что это может быть тогда?

Log.e("HTML", "henter htmlen..");
            String url = "http://beep.tv2.dk";
            HttpClient client = new DefaultHttpClient();
            client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, 
                    HttpVersion.HTTP_1_1);
            client.getParams().setParameter(CoreProtocolPNames.HTTP_ELEMENT_CHARSET, "UTF-8");
            HttpGet request = new HttpGet(url);
            HttpResponse response = client.execute(request);
            Header h = HeaderValueFormatter
            response.addHeader(header)
            String html = "";
            InputStream in = response.getEntity().getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            StringBuilder str = new StringBuilder();
            String line = null;
            while((line = reader.readLine()) != null)
            {
                str.append(line);
            }
            in.close();
        //b = false;
        html = str.toString();

Ответы [ 3 ]

3 голосов
/ 24 декабря 2010

Спасибо. Это сработало (в случае, если у других есть проблема):

HttpClient client = new DefaultHttpClient();
    client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, 
         HttpVersion.HTTP_1_1);
    client.getParams().setParameter(CoreProtocolPNames.HTTP_ELEMENT_CHARSET, "iso-8859-1");
    HttpGet request = new HttpGet(url);
    request.setHeader("Accept-Charset", "iso-8859-1, unicode-1-1;q=0.8");
    HttpResponse response = client.execute(request);
    String html = "";
    InputStream in = response.getEntity().getContent();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in,"iso-8859-1"));
2 голосов
/ 24 декабря 2010
  1. использовать конструктор new InputStreamReader(in, "UTF-8")
  2. Установите заголовок запроса Accept-Charset, скажем, Accept-Charset: iso-8859-5, unicode-1-1;q=0.8
  3. Убедитесь, что страница правильно открывается в браузере. Если это не так, то это может быть проблема на стороне сервера.
  4. Если ничего из вышеперечисленного не работает, проверьте другие заголовки с помощью firebug (или аналогичного инструмента)
1 голос
/ 02 апреля 2012

Это действительно помогло мне начать, но у меня возникла та же проблема при чтении текстового файла.Это было исправлено с помощью следующей команды:

    BufferedReader br = new BufferedReader(new InputStreamReader(new 
                FileInputStream(fileName), "iso-8859-1"));

... и, конечно, для ответа HTTP также должна быть установлена ​​кодировка:

    response.setCharacterEncoding("UTF-8");

Спасибо за помощь!

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