繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> url传递中文的解决方案总结 选择自 cyp403 的 Blog

url传递中文的解决方案总结 选择自 cyp403 的 Blog

2007-09-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:1.设置web.config文件。(我不喜欢设置成这样) ...... ...... 或者: ASPx文件中: 2.传递中文之前,将要传递的中文参数进行编码,在接收时再进行解码。 >> 进行传递 string Name = "中文参数"; Response.Re...

1.设置web.config文件。(我不喜欢设置成这样)

......

......

或者:

ASPx文件中:

2.传递中文之前,将要传递的中文参数进行编码,在接收时再进行解码。

>> 进行传递

string Name = "中文参数";

Response.Redirect("B.ASPx?Name="+Server.UrlEncode(Name));

>> 进行接收

string Name = Request.QueryString["Name"];

Response.Write(Server.UrlDecode(Name));

或者:

NavigateURL='<%# "WebForm2.ASPx?Singer=" + HttpUtility.UrlEncode("中国人", System.Text.Encoding.GetEncoding("GB2312")) %>'

3.如果是从 .HTML 文件向 .ASPx 文件进行传递中文参数的话(即不从后台用 Redirect()方法进行 Url 转换)。一样要将传递的中文参数进行编码,在接收时再进行解码。

>> 进行传递

>> 进行接收

string Name = Request.QueryString["Name"];

Response.Write(Server.UrlDecode(Name));

一般来说。设置web.config文件就可以了。但是如果你用 JavaScript 调用 webservice 方法的话(往webservice里面传递中文参数)。设置 web.config 文件好象无效。

————————————————————

在HTML中实现编解码:

在新窗口保存

20040603123628交易中心网上集中交易系统合同

当前位置保存,无闪烁。

20040603123628交易中心网上集中交易系统合同

注意:路径中的斜线是:“/”,而不是“\”,否则也不行啊。

----------------------------------------

前一阵遇到在做.net Web开发时,碰到一个很奇怪的问题,就是Url中,如果将中文字符作为参数值传递时,QueryString得到的值可能会出错。简单的说,比如下面这个Url:

UrlParmTest.ASPx?parm1=中国&parm2=中国人

在Request.QueryString时,parm1和parm2得到都是"中国",显然出现了问题,可是在某些情况下却是正常的。

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

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

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

如果在.cs文件中设置中文参数,请在中文参数外使用Server.UrlEncode("中文")对中文进行Encode

如果在.ASPx文件中设置,请使用<%=Server.UrlEncode("中文")%>进行Encode

在QueryString时,不用再进行Decode,可以获得正常的中文字符串

下面是给出的一些解释:

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

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

责任编辑:admin
相关文章