Проблема Unicode с заголовком HTML, вопросительным знаком? 65533;

Я пытаюсь разобрать заголовок со следующей веб-страницы: 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

Есть идеи? спасибо

10
задан James 19 August 2010 в 23:02
поделиться

1 ответ

U+FFFD (десятичное 65533) - это "символ замены". Когда декодер встречает недопустимую последовательность байтов, он может (в зависимости от конфигурации) заменить � на поврежденную последовательность и продолжить.

Одной из распространенных причин "поврежденной" последовательности является применение неправильного декодера. Например, декодером может быть UTF-8, но на самом деле страница закодирована в ISO-8859-1 (по умолчанию, если другой не указан в заголовке content-type или аналогичном).

Таким образом, еще до того, как вы передадите строку в escapeHtml, "é" уже будет заменено на "�"; метод кодирует это правильно.

На странице, о которой идет речь, используется кодировка ISO-8859-1. Убедитесь, что вы используете этот декодер при преобразовании полученного ресурса в строку.

31
ответ дан 3 December 2019 в 14:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: