织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>杂项技术>.NET(C#)>

解决.net中URL中文参数传递问题的办法

罗索客 发布于 2006-11-24 06:25 点击:次 
前一阵遇到在做.net Web开发时,碰到一个很奇怪的问题(我是.net新手,所以问题比较多),就是Url中,如果将中文字符作为参数值传递时,QueryString得到的值可能会出错。简单的说,比如下面这个Url: UrlParmTest.aspx?parm1=中国parm2=中国人 在Request.QueryString时
TAG:

前一阵遇到在做.net Web开发时,碰到一个很奇怪的问题(我是.net新手,所以问题比较多),就是Url中,如果将中文字符作为参数值传递时,QueryString得到的值可能会出错。简单的说,比如下面这个Url:
UrlParmTest.aspx?parm1=中国&parm2=中国人
在Request.QueryString时,parm1和parm2得到都是"中国",显然出现了问题,可是在某些情况下却是正常的。

如果请求不是直接通过URL,而使用Response.Redirect在服务器端操作,没有遇到过类似的问题。

当时我想中文是双字节编码,可能传递的时候就是有不确定性,还是用英文好。

可是为什么在Server端Redirect就是正常的,问题在哪里呢?

昨天我询问在GTEC的同学后,得知解决办法如下:
如果在.cs文件中设置中文参数,请在中文参数外使用Server.UrlEncode("中文")对中文进行Encode
如果在.aspx文件中设置,请使用<%=Server.UrlEncode("中文")%>进行Encode
在QueryString时,不用再进行Decode,可以获得正常的中文字符串

下面是同学给出的一些解释:
UrlEncode把一些多字节字符转换成url里允许的单字节字符,本来浏览器就会自动做的,但是目前确实存在一些问题,所以自己再Encode一下,在接受端会自动对Url进行Decode。

我想Response.Redirect可能可以确保作Encode的工作,所以没有问题。

(iwgh)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200611/6396.html]
本文出处: 作者:iwgh
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容