Java, загрузка по HTTP, проблема с кодировкой

Наткнулся сегодня на интересную вещь.
В общем, код проекта был в UTF-8, соответственно все строки в нём UTF-8, и все regexp'ы, которые сравнивались, тоже в UTF-8, а входящий текст - из HTTP:
Код:
URL url = new URL("http://test.ru/xmlout/");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
И проблема в том, что по-умолчанию в русском Windows - CP1251 и на вход из HTTP приходит CP1251, и когда по regexp пытается сравнить с UTF-8 строкой, то получаем ноль на выходе.
Поэтому либо всему проекту надо менять язык на CP1251, либо сделать так:
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
И тогда на вход HTTP будет приходить UTF-8.

Комментарии

Популярные сообщения