分享

写回答

发帖

[教程] GODADDY空间动易6.8生成静态页百度收录乱码的解决方法

GoDaddy GoDaddy 17302 人阅读 | 8 人回复

发表于 2010-4-19 19:27:01 | 显示全部楼层 |阅读模式

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

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

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

而并不是看网页源代码中<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行          生成专题页列表

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


通过以上修改,动易就能完美生成GB2312编码的网页了,同样方法也可以指定生成UTF-8编码的网页。
至此为止 ,动易在GODADDY上出现的所有问题全部解决。

[ 本帖最后由 红色旋风 于 2010-4-19 07:37 PM 编辑 ]

补充内容 (2012-2-1 06:47 PM):
注意:上面只是举例说明
每行需要修改的代码不一定是Call WriteToFile(InstallDir & FileName_SiteIndex, strHTML)
括号中的内容可能不同    只要在) 前面添加,"gb2312"

回答|共 8 个

add.c

发表于 2010-4-20 10:33:42 | 显示全部楼层

感谢楼主分享
另外楼主还有一个在GoDaddy主机安装动易的教程godaddy安装动易PowerEasy_SiteWeaver_CMS6.8教程

sk3800

发表于 2010-5-16 11:03:05 | 显示全部楼层

按这个方法解决不了啊 Include目录下:
PowerEasy.CreateJS.asp        第450行 根本就没有
修改方法:在下面标注的行的)前面加上,"gb2312"
例如:
找到:Call WriteToFile(InstallDir & FileName_SiteIndex, strHTML)

改成:Call WriteToFile(InstallDir & FileName_SiteIndex, strHTML,"GB2312")

add.c

发表于 2010-5-16 13:49:53 | 显示全部楼层

回复 3# 的帖子

是否版本不同?

sk3800

发表于 2010-5-19 17:19:01 | 显示全部楼层

未命名.jpg
版本是一样的!版主能帮忙解决?求求你

[ 本帖最后由 sk3800 于 2010-5-19 05:20 PM 编辑 ]

sxk1120

发表于 2010-10-8 14:14:45 | 显示全部楼层

这个要收藏,上次碰到这个问题的

gyq86

发表于 2011-7-21 11:12:40 | 显示全部楼层

我的网站也出现类似情况,怎么变一下,谢谢!

网站是www.bjdhsb999.com,谢谢
回复 支持 反对

使用道具 举报

红色旋风

发表于 2011-9-25 23:05:01 | 显示全部楼层

并不一定是这段代码Call WriteToFile(InstallDir & FileName_SiteIndex, strHTML)
括号中的内容可能不同    只要在) 前面添加,"gb2312"就可以了
回复 支持 反对

使用道具 举报

zhuandafa

发表于 2012-9-29 16:50:58 | 显示全部楼层

学习了。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则