java кодировка из windows-1251 в utf-8

Всем привет
Подскажите пожалуйста
Есть сайт в кодировке windows-1251
Делаю следующее
try {
URL u = new URL("sitename");
URLConnection conn = u.openConnection();
DataInputStream in = new DataInputStream ( conn.getInputStream ( ) ) ;
BufferedReader d = new BufferedReader(new InputStreamReader(in));
String str=null;
StringBuilder sb = new StringBuilder();
while( (str = d.readLine()) !=null)
{
sb.append(str);
}
str = sb.toString();
d.close();

WebView myWebView = (WebView) findViewById(R.id.webview);
int st=str.indexOf("block_title")-12;
int en=str.indexOf("block2")-18;
String res=str.substring(st,en);
String utf8String= new String(res.getBytes("UTF-8"), "windows-1251");;
String summary = "!"+utf8String+"";
myWebView.loadData(summary, "text/html", "utf-8");

и в WebView выходят каракули
подскажите как конвертнуть

Спасибо
  • Вопрос задан
  • 89762 просмотра
Решения вопроса 1
apangin
@apangin
Вы из потока уже не в той кодировке читаете.
Надо создать правильный InputStreamReader:
InputStreamReader isr = new InputStreamReader(conn.getInputStream(), "windows-1251");
BufferedReader br = new BufferedReader(isr);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@korvindest
В Java кодировка по умолчанию UTF-8, поэтому когда вы пишите:
String utf8String= new String(res.getBytes("UTF-8"), "windows-1251");

Вы фактически переводите UTF-8 в windows-1251, а отображаете как UTF-8.
Вы можете легко проверить мою догадку воспользовавшись программой Штирлиц 4.0
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы