#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);