我們網站從很多年一直使用國外的開源平台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月補充:春節期間搭建了我們自己的亂碼還原網站,也可以說是亂碼糾正詞典,因為導入了幾十萬個中文字詞并列出了各種編碼組合,希望對大家有用。
评论6
編碼GB2312确定是按照你說的改麼?
編碼GB2312确定是按照你說的改麼?嗯,我基本上都是可以确認上面寫的内容
嗯,我基本上都是可以确認上面寫的内容。但你說的改我不知道是指的改什麼?改自己網站的編碼還是什麼?
博主你好,剛剛閱讀完這篇文章發現确實是這樣的
博主你好,剛剛閱讀完這篇文章發現确實是這樣的,由于百度快照的源代碼編碼格式是GB2312,所以大多數國内編碼格式為UTF8的網站在百度快照中或多或少都會有一些字符産生亂碼,而我剛剛查看了一下我博客在谷歌快照,發現并沒有産生亂碼,而谷歌快照源代碼的編碼格式為UTF8,也證實以上博主帖子的觀點!謝謝!是的,Google快照不存在這種亂碼問題。
是的,Google快照不存在這種亂碼問題。
希望博主可以考慮在評論中加上填寫郵件這個功能
希望博主可以考慮在評論中加上填寫郵件這個功能,因為相信大多數的評論者都會希望自己的留言能夠得到博主的回複,而郵件正好可以通知評論者該評論已經被回複,隻是個人的建議,希望可以考慮一下!謝謝阿南的留言和建議。以前默認是開啟留言用戶填寫聯系方式的
謝謝阿南的留言和建議。以前默認是開啟留言用戶填寫聯系方式的,後來太多發垃圾鍊接、宣傳鍊接的,我就關閉了用戶留言,現在重新打開了。