AQuery (запрос Android) Данные из кэша в неправильной кодировке

#java #android #character-encoding #aquery

#java #Android #кодировка символов #aquery

Вопрос:

Я использую для получения данных AQuery, исходную кодировку windows-1251 при первом показе все в порядке, но после извлечения данных из кэша я не получаю правильную кодировку.

Я делаю

 String url = "http://example.com/";
long expire = 15 * 60 * 1000;
aq.ajax(url, String.class, expire, new AjaxCallback<String>() {

    @Override
    public void callback(String url, String html, AjaxStatus status) {

        Log.i("DATA",html);

    }

});
  

в руководстве так сказано

Если требуется пользовательская кодировка, для исправления кодировки используется метод encoding().

Пробовал и так, но это не сработало

 byte[] b = html.getBytes(Charset.forName("cp1251"));

try {
    html = new String(b, "UTF-8");
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
  

Может быть, кто-нибудь сталкивался с этой проблемой, быстрое решение означает AQuery или как кодирование строки в UTF-8> CP1251

Комментарии:

1. Что вы имеете в виду с at first show ? Где находится кеш? Как вы сохраняете их в кэше? Как вы извлекаете из кэша? Где «второе шоу»?

2. Весь механизм кэширования обрабатывается библиотекой AQuery (запрос Android) в методе .ajax()

3. Это не решает проблему. Почему бы вам не приложить больше усилий для объяснения? Хорошо, тогда вы не сохранили в кеш самостоятельно. Теперь, как вы извлекли из кэша? Как это возможно, что у вас есть html кеш до и после?

Ответ №1:

Это работает для меня:

 long expire = 15 * 60 * 1000;

AjaxCallback<String> cb = new AjaxCallback<String>();
cb.url(url).type(String.class).weakHandler(this, "DataResponse").fileCache(true).expire(expire).encoding("Cp1251");

cb.header("Referer", "http://code.google.com/p/android-query/");
cb.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2");

aq.ajax(cb);