在被UTF-8编码的vbscript页面,在写程序的过程中,不小心写错的话,在页面的输出信息是乱码的,如下图所示:
让人无法得知错误的原因。
毕竟在vbscript最初发展的时候,UTF-8编码还没有普及,都是默认以服务器系统的默认编码来跑网页,这与现在网页皆用UTF-8是相矛盾的。
虽然,现在ASP的市场占用率几乎变得没有了,之前普遍用ASP.NET都经过一番大幅度的代码修改升级成ASP.NET了,但是你还是要知道怎么解决问题。
网上流行的方法,是每次都要修改这个出错页面的编码,或者引入一种Try-catch语句来自己处理异常,这太麻烦了,谁知道我写程序的时候,又会什么时候写错呢?
正确方法是改变iis中asp错误信息输出默认编码。具体如下:
1、将C:\WINDOWS\Help\iisHelp\common\500-100.asp找到,你也可以直接用系统的搜索功能将这个500-100.asp文件找出来,用记事本打开
2、将这个文件另存为为utf-8编码,到你的网站的根目录,如果你没有改过IIS的默认网站一般是:C:\Inetpub\wwwroot
3、检查一下你的网站根目录的权限状态,一般Windows2003是全开的,可以跳过此步,就怕部分版本的Windows2003抽风而已。一般在Web共享,打开为“共享文件夹”就可以了,共享的时候,授予权限默认就行。这里,无须像部分网站写的一样,要先在“共享”处整成“共享此文件夹”,在于“安全”中的IIS来宾账户授予全部权限。
4、之后,用记事本或者notepad、Editplus等工具打开你网站根目录下的500-100.asp文件进行如下的修改:
(1)头部加上<%@LANGUAGE=”VBSCRIPT” CODEPAGE=”65001″%>,Option Explicit后面加上一行response.charset=”utf-8″,这两行先保证报错页面的编码是UTF-8的
(2)将Session.Codepage=936改为Session.Codepage=65001,这里保证Session的编码是UTF-8。
(3)保存退出。
4、在控制面板中打开“管理工具”中的IIS管理器,配置你的网站的属性,设置“自定义错误”,将500;100的类型设为URL,同时URL设为/500-100.asp。保存退出即可。
5、可以看到,如果以后你的UTF-8编码网站的出错页将会变成如下状态:
显然,报错清晰了许多。