现在的位置: 首页 > Godaddy常见问题 > 正文

GODADDY主机动易6.8生成静态页百度收录乱码的解决方法

2010年10月02日 常见问题 ⁄ 共 3349字 ⁄ 字号 暂无评论 ⁄ 阅读 2,521 views 次

虽然很多人都在用PHP  但是我还是非常喜欢动易  动易真的是太容易上手了 记得刚学动易到自己可以随心所欲的制作模板 只用了10天时间  动易的模板制作太容易了  所以现在还舍不得换别的CMS。自从用了GODADDY空间  动易或多或少的遇到些问题  都已经解决 但是最近发现在GODADDY空间下动易生成的静态页面百度收录的快照都是乱码

截图如下:

GoDaddy主机百度乱码

经过几天摸索  终于找到解决方法 现在分享给大家。
一,百度收录乱码的原因:
百度收录乱码的原因很多,但是大多数都是编码问题。动易也不例外。动易默认的编码是GB2312,这种情况在动态页面下是没有什么问题的,但是生成静态的时候可能是由于GODADDY服务器对GB2312编码的 支持问题导致生成的页面不是GB2312编码的,而是UNICODE编码。这种编码的网页有个显著的特点,就是用IE浏览器查看编码的时候,他自动选取UNICODE 并且该选项是灰色,不能更改,如下图。

GoDaddy主机百度收录乱码

用IE简单判断网页的编码方法是点击 查看 - 编码 ,然后选取自动选择  这时候哪个编码被选中了  该网页就是什么编码。
如下图:

GODADDY主机动易6.8生成静态页百度收录乱码

而并不是看网页源代码中<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  charset并不能决定网页的编码 他只是起到告诉浏览器网页采用的什么编码  如果charset与网页实际编码不符 那么不会影响浏览 但是百度蜘蛛就会误判断 造成快照乱码。
那么动易为什么只有百度快照乱码,而GOOGLE等快照正常呢,这主要是百度不支持UNICODE编码的原因造成的,大家可以做这么个实验,把收录乱码的HTML页面下载到本地  再用DW转换成GB2312或者UTF-8编码,会发现  UNICODE编码的网页体积比转换后大了整整一倍,一个SEO群里的高手说这就是百度不支持UNICODE的原因,百度太抠门了,UNICODE编码的网页太占资源。
二,解决方法:
找到问题的原因,就好解决了。既然是生成的时候自动生成了UNICODE编码的网页,那么我们让他生成GB2312或者UTF-8编码的不就解决问题了吗。
我们可以强制动易生成GB2312编码的网页 具体操作方法如下:
1,首先修改Include目录下PowerEasy.FSO.asp文件,有两个地方要修改。

修改函数:WriteToFile 和 WriteToFile_FSO
代码:
Sub WriteToFile(WriteToFileName, WriteToFileContent)
Dim ErrMsg
ErrMsg = WriteToFile_FSO(WriteToFileName, WriteToFileContent)
If ErrMsg <> "" Then
ErrMsg = WriteToFile_ADO(WriteToFileName, WriteToFileContent)
If ErrMsg <> "" Then
Response.Write "<li>生成 " & WriteToFileName & " 时出错。出错原因:" & ErrMsg & "</li>"
End If
End If
End Sub
修改为:
Sub WriteToFile(WriteToFileName, WriteToFileContent, WriteToCharset)
Dim ErrMsg
ErrMsg = WriteToFile_FSO(WriteToFileName, WriteToFileContent, WriteToCharset)
If ErrMsg <> "" Then
ErrMsg = WriteToFile_ADO(WriteToFileName, WriteToFileContent)
If ErrMsg <> "" Then
Response.Write "<li>生成 " & WriteToFileName & " 时出错。出错原因:" & ErrMsg & "</li>"
End If
End If
End Sub

代码:
Function WriteToFile_FSO(WriteToFileName, WriteToFileContent)
On Error Resume Next
Err.Clear
Dim hf
Set hf = fso.OpenTextFile(Server.MapPath(WriteToFileName), 2, True)
hf.Write WriteToFileContent
hf.Close
Set hf = Nothing
If Err Then
WriteToFile_FSO = Err.Description
Err.Clear
Else
WriteToFile_FSO = ""
End If
End Function
修改为:
Function WriteToFile_FSO(strFullName,strContent,strCharset)
On Error Resume Next
Dim objStream
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Type = 2
.Mode = 3
.Open
.Charset = strCharset
.Position = objStream.Size
.WriteText = strContent
.SaveToFile Server.MapPath(""&strFullName&""),2
.Close
End With
Set objStream = Nothing
Err.Clear
End Function

2,修改与生成相关的ASP文件,强制生成GB2312编码。
修改方法:在下面标注的行的)前面加上,"gb2312"
例如:
找到:Call WriteToFile(InstallDir & FileName_SiteIndex, strHTML)

改成:Call WriteToFile(InstallDir & FileName_SiteIndex, strHTML,"GB2312")
需要修改的文件及行数和该行代码功能
Include目录下:
PowerEasy.CreateJS.asp        第450行
Admin目录下:
Admin_CreateSiteIndex.asp        第39行   网站主页
Admin_CreateCommon.asp          第192行  栏目页     第86行  频道主页
第334行   生成专题列表
Admin_Class.asp,  第3388 行 第 3392行  第3436行 第3440行 第3444行              生成JS
Admin_CreateArticle.asp        第321行          文章内容页
Admin_CreateSoft.asp         第164行            软件内容页
Admin_CreatePhoto.asp        第270行            图片内容页
Admin_Skin.asp              第889行    第902行         网站风格管理
Admin_Advertisement.asp     第1443行               网站广告管理
Admin_CreateOther.asp   第277行 第405行 第530行  第655行  第894行   第949行  第1079行   网站生成管理下 生成网站综合数据(XML等)
Admin_Special.asp      第1083行                     刷新专题JS
Admin_CreateXml.asp       第194行                  更新栏目XML数据
Admin_CreateSiteSpecial.asp  第104行 第127行          生成专题页列表

修改这些基本上就能解决生成问题了 如果大家以后再发现别的功能出现如下图所示的错误提示时,大家接着修改提示的相应行即可。

GoDaddy

通过以上修改,动易就能完美生成GB2312编码的网页了,同样方法也可以指定生成UTF-8编码的网页。
至此为止 ,GODADDY主机动易6.8生成静态页百度收录乱码的问题全部解决。

其他有关Godaddy乱码教程:

转移dedecms乱码的解决办法

Godaddy主机乱码的解决方法

抱歉!评论已关闭.