Проблемы с ISO-8859-1 и библиотекой OkHttp

Я пишу приложение на Java, в котором я использую запрос GET с библиотекой OkHttp, чтобы получить некоторую информацию о веб-странице. Веб-страница использует ISO-8859-1. Вверху страницы есть этот тег: <meta http-equiv = "Content-Type" content = "text/html; charset=ISO-8859-1"/>.

Код для запроса GET следующий:

Request request = new Request.Builder()
                    .url(webpage)
                    .get()
                    .addHeader("upgrade-insecure-requests", "1")
                    .addHeader("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36")
                    .addHeader("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
                    .addHeader("accept-language", "es-ES,es;q=0.9")
                    .addHeader("cache-control", "no-cache")
                    .build();

Response response = client.newCall(request).execute();
String html = response.body().string();

Если я распечатаю headers запроса GET, я получу следующее: Content-Type: text/html; charset=ISO-8859-1.

Строка html содержит сообщение, которое я хочу использовать для приложения, но есть некоторые символы, которые не читаются. Например: символ евро (), при печати на терминале он выглядит как вопросительный знак (?).

Я хотел знать, смогу ли я получить эти символы в оболочке utf-8.

Попробуйте с помощью curl сохранить страницу в файл, запустите на нем команду file. Он подтвердит, соответствует ли кодировка заголовкам.

Jesse Wilson 30.04.2018 18:32

iso-8859-1 не содержит символа евро, поэтому сайт не может содержать этот символ, если он использует iso-8859-1 или фактически не использует iso-8859-1 (но, например, iso-8859- 15 (iso-8859-1 + символ евро и некоторые другие изменения).

Mark Rotteveel 30.04.2018 19:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
95
0

Другие вопросы по теме