iis7 url rewrite 传递中文url参数乱码问题怎么解决?

的asp网站现在需要换服务器,新服务器的系统只支持微软自家url rewrite的地址重写。
以前使用的是isap rewrite,传递中文参数没有问题,但是现在只能用微软的url rewrite了。
网站全站采用的是gbk编码,
参数para传递的是经过server.URLEncode()的中文字符串,现在经过rewrite重写之后,在新页面接受到的始终都是utf-8编码的字符串,所以使用utf-8转gbk的函数转码,但是问题出现了,就是如果是偶数个汉字,解析出来的没有问题,但如果是奇数个汉字,解析出来的最后一个字符不正确。
通过在网上查资料和自己测试,发现在iis rewrite重写的时候就把我gbk编码的字符串转成utf-8了,这种字符串形式的转码,会把奇数个汉字的最后一个字符丢失(因为GBK编码是一个中文2个字节,而UTF-8编码是一个中文3个字节)。导致在最终页面再怎么转码处理,也没有办法还原原来的字符了。

求大侠怎么才能解决这个问题,在最终页面获取到原来的中文字符参数?
已邀请:

夜云 - 代码客工程师

赞同来自:

在接收页面顶部加入下面这样的代码:
a=request.Form("a")
Session.CodePage = 65001
request("b")
Session.CodePage = 936
a是表单传来的中文参数,b是rewrite重写传来的中文参数,顺序打乱了就只能接收一种参数(get或post的),这样写就能接收了。

要回复问题请先登录注册