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

Jam*_*mes 10 html java unicode utf-8

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

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

Das hermetische Caf�: Rock & Wrestling 2010
Run Code Online (Sandbox Code Playgroud)

然而,当我在我的网页上用utf-8编码显示它时,它只显示一个问号.

使用以下代码:

String title = StringEscapeUtils.escapeHtml(myTitle);
Run Code Online (Sandbox Code Playgroud)

如果我通过这个网站运行标题:http://tools.devshed.com/?option = com_mechtools&tool = 27我得到以下输出似乎是正确的

标题:

<title>Das hermetische Café: Rock &amp; Wrestling 2010</title>
Run Code Online (Sandbox Code Playgroud)

成为(我期待escapeHtml方法做):

<title>Das hermetische Caf&eacute;: Rock &amp; Wrestling 2010</title>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢

eri*_*son 31

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

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

所以,在你把字符串传递给之前escapeHtml,"é"已经被" "取代了; 该方法正确编码.

有问题的页面使用ISO-8859-1编码.将获取的资源转换为a时,请确保使用该解码器String.