首页新闻找找看学习计划

HttpContext.Current.RewritePath的一个编码问题,请达人们帮助,谢谢了

0
悬赏园豆:100 [待解决问题]

1、问题是这样,在虚拟空间(一般的万能空间)放了个php程序,用了.net httpmodule来做url重写。如将 /tag/xxx 重写为 tag.php?s=xxx 的时候,如果xxx为英文,则一切正常,如果xxx为中文,则php的s值为??(没能正确解码)。

2、我的尝试,通过调试重写模块,发现HttpContext.Current.RewritePath重写的时候,自动将参数做了Server.UrlEncode,如果重写到aspx页面,那么通过Request["s"]可以得到自动解码的正确值。如果重写到php页面,php不能得到正确值。我尝试了在HttpContext.Current.RewritePath前,将参数自己指定UTF8编码(HttpUtility.UrlEncode(xxx, UTF8)),但是HttpContext.Current.RewritePath时候,还是要再一次编码。

 

请各位大侠帮忙研究一下。非常感谢了。

问题补充:

我的一些测试疑问:

<%=Server.UrlEncode("啊")%>  输出:%e5%95%8a

<%=Server.UrlDecode("%u554a")%>输出:啊

%u554a 这个值是在Context.ReWritePath 时候卡住断点,Server.UrlEncode("啊") 他得到的。


<%=System.Text.Encoding.Default.BodyName%> 输出:iso-8859-1
<%=HttpUtility.UrlEncode("啊", System.Text.Encoding.Default)%> 输出:%3f
<%=HttpUtility.UrlEncode("啊", System.Text.Encoding.GetEncoding("iso-8859-1"))%>输出:%3f

Pecans的主页 Pecans | 初学一级 | 园豆:100
提问于:2012-02-24 11:42
< >
分享
所有回答(1)
0

建议试试IIS的URL Rewrite module

dudu | 园豆:39168 (高人七级) | 2012-02-24 11:46

是用的虚拟空间,没有控制权,而且是iis6啊

支持(0) 反对(0) Pecans | 园豆:100 (初学一级) | 2012-02-24 11:59

@Pecans: 试试在PHP中进行UrlDecode

支持(0) 反对(0) dudu | 园豆:39168 (高人七级) | 2012-02-24 12:04

@dudu: php中urldecode也试过,同时也试过先mb_convert_encoding转码,再解码。也不行。

对了,还发现个问题,比如在HttpContext.Current.RewritePath这个地方,断点卡住,在监视里测试Server.UrlEncode("啊") 得到的结果是 %u554a,也就是重写过去的值。而在aspx页面,Server.UrlEncode("啊") 则输出 %E5%95%8A。

支持(0) 反对(0) Pecans | 园豆:100 (初学一级) | 2012-02-24 12:12

@Pecans: Server.UrlEncode("啊") 得到的结果是 %u554a,也就是重写过去的值。而在aspx页面,Server.UrlEncode("啊") 则输出 %E5%95%8A。使用的编码不一样。

支持(0) 反对(0) X龙 | 园豆:200 (初学一级) | 2012-02-27 00:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册