百度收录的快照显示乱码怎么解决

2013/5/16 11:39:33      点击:

(章丘做网站就找章丘屹柏工作室)

      百度收录后,快照显示是乱码的问题,可能不多见,但笔者却是遇上了,这个问题确实是很麻烦的,先上个图,直观的看一下问题是什么样子的,请看下图吧

 

      这是笔者2010年11月份接手的一个网站,ASP+DIV+CSS全站静态化,谷歌收录一切正常,没想到百度收录却是这个样子,下面就把怎么解决这个问题的过程记一下,本来早想写的,但是百度之前收录的,有一两百页,一直不更新,快照的缓存就一直是以乱码显示,不管怎么天天更新网站内容,怎么做外链,百度就是不更新,这对于一个企业站,最初收录的一两百页是乱码真的很崩溃的,到后来实在没办法,只能换了个域名,所以说这个问题真的很麻烦,可能有朋友问为什么上线时看到乱码不解决这个问题呢?

  让百度收录了那么多才发现问题?这是因为百度对于一个新站,一般是收录了,但不放出来(就是不显示出来)查收录时只能看到一个首页,而且百度天天来抓取网站,首页的快照也是天天更新,大约是15天的时间,笔者就称它为考察期吧,过了考察期,百度就会把这期间抓取的页面全放出来,也只有到这时,笔者才发现收录了的快照,竞然全是乱码,而且这往后的几天,百度就不再收录别的页面,到这时真的是为时已晚,这是个教训,希望对各位站长有帮助,网站上线之前,一定要测试下,不要急于上线。

  下面讲一下解决问题的过程,因为网站上线前,笔者也是做测试,首先用蜘蛛模拟抓取器抓取测试,再就是用一个老域名来测试,收录了几个内页都正常后才上线的,只是测试时是在个人空间上试的,正式上线后,是把网站放在公司服务器上,所以可以肯定服务器环境与网站代码的兼容性的问题,服务器还放着其它网站,不过是ASP.net写的网站,难道服务器还选择开发语言?

  问了服务器供应者,得到的答复是服务器环境是支持ASP与ASP.net这两种语言的,这就可以排除了设计语言的问题,接下来是用放在服务器上的其它网站的具体页面代码与该网站代码进行对比,发现在网站的编码上有个小区别,我们的网站编码是Unicode,而其它网站都是Unicode(UTF-8),再问服务器供应者,得到的结果是服务器环境默认编码全部是Unicode,再看一下我们的网站CSS默认编码是GB2312,页面生成静态页时也没指定编码类型,所以生成的静态页面,就成了Unicode。

  当时在个人空间测试时,个人空间的默认编码刚好是GB2312,所以就一切正常,而百度对Unicode编码是不欢迎的,据说是因为Unicode编码的网页太占资源,大家可以自已试一下,把Unicode编码的页面下载到本地,再用DW或者其它工具转换成GB2312或者UTF-8编码,会发现Unicode编码的网页体积比转换后大了将近一倍,但Unicode却能支持世界各国语言,所以谷歌支持,因为它是一个全球化的搜索引擎,这也从一个侧面说明,百度有些小家子气,想进军国外市场看来还有很长的路要走,这是题外话了!

  发现了问题就好办了,只要指定一下生成页面的编码是Unicode(UTF-8)就行了,我们网站是在conn.asp文件中加下面的一段代码:

  Public Function WriteToTextFile(FileName,body)‘On Error Resume Next‘If InStr(FileName,“:”) = 0 Then FileName = Server.MapPath(FileName)Dim oStreamSet oStream = CreateObject(“ADODB.Stream”)oStream.Type = 2‘设置为可读可写oStream.Mode = 3‘设置内容为文本oStream.Charset =“UTF-8″‘此处可控制编码方式oStream.OpenoStream.Position = oStream.SizeoStream.WriteText bodyoStream.SaveToFile FileName, 2oStream.CloseSet oStream = Nothing‘If Err.Number <> 0 Then Err.ClearEnd Function

  之后,把网站所有页面全部重新生成后,就等着百度收录了,过几天,百度才又开始收录新的页面,新收录的页面全部正常了,但之前收录的快照却一直不更新,等了三个月都不更新,直到现在也一直是让它乱码在那里,没办法,两个月前只好换了个域名,新域名收录一切都正常了。

  对于笔者来说,这是个惨痛的教训,现在把这个教训写出来,希望站长朋友们不要重蹈笔者这样的复辙!