当前位置

百度快照里面中文网址显示乱码的问题

James Qi 在 2019年1月24日 - 13:55 提交

  我们网站从很多年一直使用国外的开源平台MediaWiki和Drupal,都是用的UTF-8字符集来支持多语言,URL网址也是采用的系统自带或者插件自带的编码方式,例如:查号吧网站里面有个标题为“越南”页面,URL网址不是“https://www.chahaoba.com/越南”,而是UTF-8编码后的“https://www.chahaoba.com/%E8%B6%8A%E5%8D%97”,这在Google里面、百度里面搜索和展示也都没有问题,用户用各种浏览器打开也都正常。

  但我们发现在百度快照中却有问题,截图如下:

  可以看到其中有两个地方出现乱码,一个是我们的网页网址中的“瓒婂崡”乱码,一个是我们页面中面包屑导航用到的“»”字符。

  在浏览器中查看百度快照的源代码,发现快照页面本身采用的编码是GB2312:

<!DOCTYPE HTML>
<!--STATUS OK-->
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<base href="https://www.chahaoba.com/瓒婂崡">
...
<div id="bd_snap_note">百度和网页 <a href="https://www.chahaoba.com/瓒婂崡">https://www.chahaoba.com/瓒婂崡</a> 的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。</div>
...
<div style="position:relative">
<!DOCTYPE html>
<html lang="zh-CN" dir="ltr" class="client-nojs">
<head>
<meta charset="UTF-8"/>
<title>越南国际区号 | 查号吧</title>
...
<span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a itemprop="item" href="/%E9%A6%96%E9%A1%B5">
<span itemprop="name">首页</span></a>
<meta itemprop="position" content="1" />
</span>
�0�3
<span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a itemprop="item" href="/%E5%9B%BD%E9%99%85%E9%95%BF%E9%80%94">
<span itemprop="name">国际长途</span></a>
<meta itemprop="position" content="2" />
</span>
...
</body>
<!-- Cached/compressed 20190121051958 -->
</html>
</div>

  从上面可以看出百度快照页面本身用的是GB2312编码,那么它包含进去的我们的页面中“»”字符是不在GB2312编码内的,就显示成乱码了。

  另外,百度快照对我们网页的URL中的UTF-8编码成的“%E8%B6%8A%E5%8D%97”误认为是GB2312编码,本来是两个汉字对应的“%E8%B6%8A”和“%E5%8D%97”,被划分为“%E8%B6”、“%8A%E5”、“%8D%97”三个汉字的GB2312编码,对应成了错误的三个中文字“瓒婂崡 ”,这三个中文字网址“https://www.chahaoba.com/瓒婂崡”再使用正确的UTF-8编码后网址变成了“https://www.chahaoba.com/%E7%93%92%E5%A9%82%E5%B4%A1”,在我们网站中页面就打不开了。

  而百度搜索结果页本身就是使用的UTF-8编码,所以不存在上面说的这样的问题。只是百度快照页面使用的技术太老旧,charset还是gb2312或者big5,且没有改用https。

  知道这个原因后,我们其实是可以做反向转换、编码,找到正确的网址的,后续工作以后再记录。甚至可以考虑做一个专门的乱码对应正确字符的网站出来。

  参考工具:乱码恢复

  另外,最近还发现百度MIP也出现一些奇怪的错误,例如搜索结果页是正确的,但点击后到达一个错误的页面,还待排查。后来已经解决,清理了MIP缓存,详见:《清除百度MIP缓存,纠正跳转错误》。


  2019年2月补充:春节期间搭建了我们自己的乱码还原网站,也可以说是乱码纠正词典,因为导入了几十万个中文字词并列出了各种编码组合,希望对大家有用。

自由标签:

评论

博主你好,刚刚阅读完这篇文章发现确实是这样的,由于百度快照的源代码编码格式是GB2312,所以大多数国内编码格式为UTF8的网站在百度快照中或多或少都会有一些字符产生乱码,而我刚刚查看了一下我博客在谷歌快照,发现并没有产生乱码,而谷歌快照源代码的编码格式为UTF8,也证实以上博主帖子的观点!谢谢!

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。