Я пытаюсь разобрать заголовок со следующей веб-страницы: http://kid37.blogger.de/stories/1670573/
Когда я использую apache.commons.lang StringEscapeUtils Метод .escapeHTML для элемента title Я получаю следующее
Das hermetische Caf�: Rock & Wrestling 2010
, однако, когда я отображаю его на своей веб-странице с кодировкой utf-8, он просто показывает знак вопроса.
Используя следующий код:
String title = StringEscapeUtils.escapeHtml(myTitle);
Если я запускаю заголовок через этот сайт: http://tools.devshed.com/?option=com_mechtools&tool=27 Я получаю следующий вывод, который кажется правильным
НАЗВАНИЕ:
Das hermetische Café: Rock & Wrestling 2010
СТАТЬ (что я ожидал сделать методом escapeHtml):
Das hermetische Café: Rock & Wrestling 2010
Есть идеи? спасибо
U+FFFD (десятичное 65533) - это "символ замены". Когда декодер встречает недопустимую последовательность байтов, он может (в зависимости от конфигурации) заменить � на поврежденную последовательность и продолжить.
Одной из распространенных причин "поврежденной" последовательности является применение неправильного декодера. Например, декодером может быть UTF-8, но на самом деле страница закодирована в ISO-8859-1 (по умолчанию, если другой не указан в заголовке content-type или аналогичном).
Таким образом, еще до того, как вы передадите строку в escapeHtml
, "é" уже будет заменено на "�"; метод кодирует это правильно.
На странице, о которой идет речь, используется кодировка ISO-8859-1. Убедитесь, что вы используете этот декодер при преобразовании полученного ресурса в строку
.