//下面两个函数的定义见上文
function HttpFilterProc(...);begin...end;
function GetFilterVersion(...);begin...end;
exports
HttpFilterProc index 1,GetFilterVersion index 2;
Begin end.
读者一定注意到了,这个过滤器将所有返回的HTML都转换成了BIG5码,那么GB码又如何看到呢?当然可以在过滤器中检查一些环境变量来决定用户所要求的是GB还是BIG5,可是这样做除了比较麻烦外,还存在效率问题,因为每个请求都要被过滤器处理。
笔者采用的方法是利用IIS4.0中可以设置多个站点的功能,设置两个站点。一个不含过滤器,所以GB内容高效直接的返回给GB用户;而另一个站点使用另外一个端口比如81,所有虚拟目录和前一个站点一样,将过滤器加载在该站点上,这样所有向81端口的请求,都将被过滤器转换成BIG5码返回给用户。
下面简述一下具体配置过程。首先在delphi中选择新建一个DLL,输入程序源码,编译后生成gb2bigfiler.DLL文件。在IIS4.0 的管理控制台中,选"新建站点",主目录和缺省站点一样,端口设为81,在ISAPI过滤器中选择"添加",将gb2bigfiler.DLL加入。
设置好后,可以浏览81端口(例如:http://www.yoursite.com:81/your.html),这时原来GB码的内容就变成了BIG5码了。