【问题标题】:Unicode issue with an HTML Title, question mark? 65533;带有 HTML 标题、问号的 Unicode 问题? 65533;
【发布时间】:2011-04-01 09:58:49
【问题描述】:

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

当我在标题元素上使用 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>

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

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

有什么想法吗?谢谢

【问题讨论】:

    标签: java html unicode utf-8


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 你是对的,我调整为 iso-8859-1 并且处理正确。非常感谢。
    猜你喜欢
    • 2016-04-21
    • 2012-08-31
    • 2017-02-23
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    相关资源
    最近更新 更多