如何将asp程序由gb2312编码转换成utf-8编码

现在采用utf-8编码是国际化大趋势,然而,由于历史等原因,现在国内许多主流的asp程序依然采用gb2312编码,实在是不利于国际化推广。

那么能不能将asp整站程序由gb2312编码转换为utf-8编码?

下面向大家说明如何将asp整站程序由gb2312编码转换为utf-8编码。  

第一步、将程序中所有的文本类文件编码格式由gb2312转换为utf-8

所谓文本类文件包括asp、htm、html、css、js、txt等可由记事本打开的程序。

文件编码格式转换有许多工具。推荐使用本人制作的阿海文本文件工具箱(点此下载),可以进行批量转换。

第二步、将网页中指示为gb2312编码的代码全部改为utf-8编码

下面列出需要修改的代码

Gb2312 ---> Utf-8

charset="gb2312" ---> charset="utf-8  

Codepage="936" ---> Codepage="65001"  

Response.codepage="936" ---> Response.codepage="65001"  

Response.Charset="gb2312"  ---> Response.Charset="utf-8"

adodb.stream.Charset="gb2312"   ---> adodb.stream.Charset="utf-8"  

此外,还有FileSystemObject对象的CreateTextFile方法要注意,将第三个参数加上并设为true。CreateTextFile方法参考见最后。  

完成前两步后,网站应该可以做为utf-8网站运行了。不过如果以为这样就大功告成了,那就大错特错了,还要完成第三步。

第三步、加上缺少的必要代码

Response对象默认使用的字符集为本地字符集,很多程序员在使用Response对象时都不指定其字符集,这在gb2312编码时没问题,但当转为uft-8时,就会经常出现乱码了,尤其是使用response.write语句时。因此,为了保证不出现乱码,应确保使用response对象时均明确指定了字符集,即是否调用了

Response.codepage="65001"  

Response.Charset="utf-8"

这两个语句。

完成了这三步,那么恭喜你,基本上就完成了转换了,赶快运行测试吧。

如果有哪位高人还发现了其他要修改的,请告诉大家,以便更好的提高完善。

附:CreateTextFile方法参考:  

CreateTextFile 方法

创建指定文件并返回 TextStream 对象,该对象可用于读或写创建的文件。  

object.CreateTextFile(filename[, overwrite[, unicode]])  

参数  

object

必选项。应为 FileSystemObject 或 Folder 对象的名称。

filename  

必选项。字符串表达式,指明要创建的文件。  

overwrite

可选项。Boolean 值指明是否可以覆盖现有文件。如果可覆盖文件,该值为 True;如果不能覆盖文件,则该值为 False 。如果省略该值,则不能覆盖现有文件。

unicode  

可选项。Boolean 值指明是否以 Unicode 或 ASCII 文件格式创建文件。如果以 Unicode 文件格式创建文件,则该值为 True;如果以 ASCII 文件格式创建文件,则该值为 False。如果省略此部分,则假定创建 ASCII 文件。

说明

以下代码举例说明如何使用 CreateTextFile 方法创建并打开文本文件:  

Sub CreateAfile

  Dim fso, MyFile

  Set fso = CreateObject("Scripting.FileSystemObject")

  Set MyFile = fso.CreateTextFile("c:\testfile.txt", True)  

  MyFile.WriteLine("这是一个测试。")

  MyFile.Close

End Sub

对于 filename 已经存在的文件,如果 overwrite 参数为 False,或未提供此参数时,则会出现错误