UNICODE 问题与 HTML 标题,问号?65533;

2022-09-02 19:37:23

我正在尝试从以下网页解析标题:http://kid37.blogger.de/stories/1670573/

当我在title元素上使用apache.commons.lang StringEscapeUtils.escapeHTML方法时,我得到以下结果。

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>

BECOMES(我期待escapeHtml方法这样做):

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

任何想法?谢谢


答案 1

U+ FFFD(十进制 65533)是“替换字符”。当解码器遇到无效的字节序列时,它可能会(根据其配置)替换损坏的序列并继续。

“损坏”序列的一个常见原因是应用了错误的解码器。例如,解码器可能是 UTF-8,但页面实际上是使用 ISO-8859-1 编码的(如果未在内容类型标头中指定另一个或等效项,则为默认值)。

因此,在你将字符串传递给 之前,“é”已经被替换为“ ”;该方法对此进行了正确的编码。escapeHtml

有问题的页面使用 ISO-8859-1 编码。确保在将提取的资源转换为 .String


答案 2