Unicode проблема с заголовком HTML, вопросительный знак? 65533; - PullRequest
9 голосов
/ 20 августа 2010

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

Название:

<title>Das hermetische Café: Rock &amp; Wrestling 2010</title>

СТАТЬ (что я ожидал сделать методом escapeHtml):

<title>Das hermetische Caf&eacute;: Rock &amp; Wrestling 2010</title>

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

1 Ответ

29 голосов
/ 20 августа 2010

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

Одной из распространенных причин «поврежденной» последовательности является то, что был применен неправильный декодер.Например, декодером может быть UTF-8, но страница фактически кодируется с помощью ISO-8859-1 (по умолчанию, если другой не указан в заголовке типа содержимого или эквивалентном).вы даже передаете строку в escapeHtml, «é» уже заменено на «�»;метод кодирует это правильно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...