Как получить строки с нужным текстом из GET-запроса веб-сайта, избегая специальных HTML-кодов? - PullRequest
0 голосов
/ 06 июня 2019

Я получаю код испанского сайта через объект HttpConnection, используя запрос GET.Когда я печатаю вывод через консоль (код веб-сайта), испанские символы отсутствуют.Вместо этого есть некоторые «странные» персонажи.

Предполагается, что кодировка сайта - "UTF-8" (), но я не знаю, как она работает с испанскими символами (á, ñ и т. Д.)

Я пробовал много вещей, таких как определение свойства charset в UTF-8, в методе setRequestProperty, построение строки из массива char, построение строки из байтового массива с использованием определенной кодировки UTF-8, потому что я где-то читал, чтокласс Java String строит строки в UTF-16 по умолчанию, и, нет.Это все еще дает мне все эти странные символы.

Я также пробовал те же вещи, используя кодировку ISO-8859-1, с тем же плохим результатом, а также без какой-либо спецификации кодирования.

OkЯ знаю, что эти символы следуют шаблону, и я мог бы создать класс для их «перевода», но я уверен, что до этого есть гораздо лучшие варианты.

String myMethod() {

    con.setRequestMethod("GET");
    con.setRequestProperty("User-Agent", "Mozilla/5.0");
    con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
    con.setUseCaches(false);
    con.setDoInput(true);
    reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));

    return reader.lines().collect(Collectors.joining("\n"));

}

Это одинпример того, что происходит.

Предложение, которое написано на сайте (и я хочу получить):

"Equipo de protección otoño de toda la estaciòn"

предложение, которое я на самом деле получаю из моего вывода:

"Equipo de protección otoño de toda la estaciòn"

1 Ответ

1 голос
/ 06 июня 2019

Я использовал StringEscapeUtils от Apache Commons (https://mvnrepository.com/artifact/commons-lang/commons-lang/2.6).

String dirty = "Equipo de protección otoño de toda la estaciòn";
String clean = StringEscapeUtils.unescapeHtml(dirty);

Выходные данные: Equoto de protección otoño de toda la estación

Надеюсь, это поможет. Удачи. Если у вас есть какие-либо дополнительные вопросы, оставьте комментарий.

...