【问题标题】:Why are my search results not in the same charset as my page encoding?为什么我的搜索结果与我的页面编码的字符集不同?
【发布时间】:2017-08-18 19:39:04
【问题描述】:

我正在为 html 页面使用 UTF-8 编码。

<head>
   <meta charset="utf-8">

在调试器控制台中,document.characterSet 返回“UTF-8”。

在页面上,我的元数据(关键字、描述、标题)具有有效的 UTF-8 字符:'®',即 UTF-8:'c2ae'

字符在视图源和页面标题中正确显示。

但谷歌搜索结果和必应搜索结果将其显示为“î”。也就是说,在网络抓取期间,它似乎正在转换为 ISO-8859-1 或 Western-1252,同时显示两个字节:“c2”和“ae”。

如果我用&amp;#174; => (\u00ae) 替换字符,它会正确显示。

没有将我的元数据转换为 ISO-8859-1,我应该为此使用最佳实践吗?

【问题讨论】:

  • 您是否看到了一些缓存结果?不确定如何验证这一点,也许做一个小改动,例如 - 广告时间戳
  • 我们使用了 google web-admin 实用程序,您可以在其中生成哈希并将其添加到另一个元数据标签,然后请求重新获取页面。新的 fetch 实用程序显示传入的元数据并在其中包含字符。
  • 您应该发布解决方案的答案,而不是将解决方案编辑到问题中。

标签: utf-8 metadata search-engine


【解决方案1】:

问题出在后端,从缓存中读取数据时未正确转码为 UTF-8。所以,我觉得最好的做法是使用原生 UTF-8 BMP 字符,并使用正确的页面编码,而不需要使用 html 实体值。

【讨论】:

    【解决方案2】:

    查看页面元标记并确认它没有使用此:

    <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
    

    对于 HTML5,Google 建议:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
    

    还要注意这一点:

    注意:

    <meta charset="">
    

    另一个注意事项: HTML 中保留了一些字符。 “HTML 实体” HTML 中的这些保留字符必须替换为字符实体。 例如

    &   ampersand   &amp;   &#38;
    
    ®   registered trademark    &reg;   &#174;
    

    【讨论】:

    • 在第一句话中我提到我的页面被编码为 utf-8,这就是我的意思。我使用的是上面的 html5 标准。在控制台中,输入 document.characterSet 绝对会返回“UTF-8”。我会澄清这个问题,谢谢
    • 我已经更新了我的答案,请发布您的元字符集和内容字符集。
    • 查看我关于 html 实体的注释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    相关资源
    最近更新 更多