以下简单的让你的动易SW6.8支持UTF-8

为什么动易SW6一直都不支持UTF-8编码呢?相信大家都因为这个很是郁闷吧?

不用再郁闷了,从现在开始,我来教大家怎么修改动易的程序,让它支持UTF-8编码.

原因:动易SW写入文件的方式是采用的FSO默认的组合写入,所以不支持UTF-8的方式。
对应函数:WriteToFile_FSO (Include\PowerEasy.FSO.asp)

解决方法:用Adobe.Stream

好了,现在就开始我们的修改之路吧 (修改写你要清楚,修改之路是很漫长的,因为下次动易升级了,你的文件也要随着重新修改,对于那些想等着动易自己解决的用户和懒得不想动的用户,此方法不适用!)

说明:此方法可能会存在一些问题,请修改前把原文件备份,有口水的人请你不要在这乱叫,你可以走开不看!

注意,这个文件Include\PowerEasy.FSO.asp 有两个地方要修改

修改函数:WriteToFile 和 WriteToFile_FSO

以下为修改后的函数,你可以和原来的对照,看下修改了哪些地方!

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(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

好了,第一部分完成了。

现在来修改首页生成的地方,大家请找到 Admin/Admin_CreateSiteIndex.asp (注意:Admin这个目录可能因为你的修改而不同,反正就是管理目录)。

找到:Call WriteToFile(InstallDir & FileName_SiteIndex, strHTML)

改成:Call WriteToFile(InstallDir & FileName_SiteIndex, strHTML,"utf-8")

可以看到,只是在后面加了个生成的编码方式。

看到这,大家应该都清楚怎么修改了吧?聪明的还可以自己写个常量来控制生成的编码,以后就不用麻烦的去修改了。

比如:在Start.asp页面中增加 Const MyCharset = "utf-8"

那么上面的就可以这个改 Call WriteToFile(InstallDir & FileName_SiteIndex, strHTML, MyCharset)

 

最后的说明:其他页面,比如说

Admin/Admin_CreateArticle.asp 、Admin/Admin_CreateProduct.asp等等页面,找出你要使用的模块页面,把Call WriteToFile 改成上面的就可以了。

警告:此修改只针对SW6.6,对下的版本应该是一样的。在实际操作中遇到什么问题,可以给我发邮件
121sun@163.com 只回答关于此问题,其他修改请不要再问我了,因为我现在在修改新版本。

补充说明: 不要忘记生成通用模块的页面 Admin/Admin_CreateCommon.asp (生成频道首页和栏目页及专题的都在这了)

目前没有解决搜索的时候,取得的关键字是被编码了的(思考中。。。希望官方可以给个思路)

对于index.asp和search.asp等页面,如Copyright.asp 的开始,要增加编码转换语句。

<%
'**************************************************************
' Software name: PowerEasy SiteWeaver
' Web:
' Copyright (C) 2005-2008 佛山市动易网络科技有限公司 版权所有
'**************************************************************

Response.CodePage=65001
Response.Charset="utf-8"

..............
目前访方法没有找到解决搜索页面的问题,搜索的时候,取得的关键字是被编码了的。