带有HTML标题的Unicode问题,问号? 65533;

时间:2010-08-19 23:02:39

标签: java html unicode utf-8

我正在尝试从以下网页解析标题: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:

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

BECOMES(我期待使用escapeHtml方法):

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

任何想法?感谢

1 个答案:

答案 0 :(得分:28)

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

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

因此,在您将字符串传递给escapeHtml之前,“é”已被替换为“ ”;该方法正确编码。

相关页面使用ISO-8859-1编码。将获取的资源转换为String时,请确保使用该解码器。