前天遇到一个地址传递中文参数变为乱码的问题,同样的两个web Project,一个是vs2003,一个是vs2005,前者可以,后者就是不可以。
在Web.comfig中配置 是一样的:
<
globalization
requestEncoding
="gb2312"
responseEncoding
="gb2312"
/>
页面Header部分也都有
<
meta
http-equiv
="Content-Type"
content
="text/html;charset=gb2312"
/>
真是奇怪,
只好用了笨办法:
写参数:
string
strurl
=
PreUrl
+
"
?word={0}&sort={1}&check={2}
"
;
strurl
=
string
.Format(strurl,HttpUtility.UrlEncode(
this
.txtSearchTxt.Text.Trim(),System.Text.Encoding.GetEncoding(
"
GB2312
"
)),
this
.radioSortDesc.SelectedIndex.ToString(),CheckState.ToString());
Page.Response.Redirect(strurl);
//
注意编码方式为gb2312
读参数:
try
{
if
(Page.Request.QueryString[
"
word
"
]
!=
null
)
{_word
=
Convert.ToString(HttpUtility.UrlDecode(Page.Request.QueryString[
"
word
"
],System.Text.Encoding.GetEncoding(
"
GB2312
"
)));}
}
catch
{_word
=
String.Empty;}
///
注意编码方式为gb2312,与前面对应
后来,看了孟子E单的文章,才发现有更好的解决方案:
用Javascript!
写一个方法放在基类页面中
public
void
PageLocation(
string
chineseURL)
{
if
(chineseURL
==
null
||
chineseURL.Trim().Length
==
0
)
{
return
;
//
还可能不是一个合法的URLTony2007/11/15
}
Page.ClientScript.RegisterStartupScript(
this
.GetType(),
"
AgronetPageLocationTo
"
,
"
<scripttype='text/javascript'language='javascript'>window.location.href='
"
+
chineseURL
+
"
';</script>
"
);
}
然后在页面中调用
string
strurl
=
PreUrl
+
"
?word={0}&sort={1}&check={2}
"
;
strurl
=
string
.Format(strurl,
this
.txtSearchTxt.Text.Trim(),
this
.radioSortDesc.SelectedIndex.ToString(),CheckState.ToString());
PageLocation(strurl);
注意后种方法用了Javasrcipt,实际应用在分页
时需要保持中文参数,最好还是用window.Location.Href方法!
最后,如果一要在javascript与.net后台代码进行对话,可以这样:
<
script
language
="JavaScript"
>
function
GoUrl()
{
var
Name
=
"
中文参数
"
;
location.href
=
"
B.aspx?Name=
"
+
escape(Name);
}
</
script
>
<
body
onclick
="GoUrl()"
>
接收:
string
Name
=
Request.QueryString[
"
Name
"
];
Response.Write(HttpUtility.UrlDecode(Name));
要点是:
将传递的中文参数进行编码,在接收时再进行解码。
完。
分享到:
相关推荐
asp.net中获取远程网页的内容之一(downmoon原创)
asp.net下获取远程网页的内容之二(downmoon原创)
讲座内容: Profie是ASP.NET 2.0的重要特性之一,而ASP.NET AJAX提出了Profile Service,使开发人员能够方便地在客户端以AJAX的方式来处理Profile信息。这节课我们将来了解这个ProfileService的使用和扩展方式。
讲座内容: Authentication Service是ASP.NET AJAX提供的另一个Application Service,能够让我们以AJAX方式来使用用户登录等功能。本次课程主要讲述如何来使用Authentication Service。
Authentication Service是ASP.NET AJAX提供的另一个Application Service,能够让我们以AJAX方式来使用用户登录等功能。本次课程主要讲述Authentication Service的简单实现细节以及如何扩展Authentication Service。
讲座内容: Profie 是ASP.NET 2.0的重要特性之一,而ASP.NET AJAX提出了Profile Service,使开发人员能够方便地在客户端以AJAX的方式来处理Profile信息。这节课我们将来了解这个ProfileService简单的功能细节以及...
一个相当独立的....支持 DataGrid 及 Repeater分页使用方法:新建两个解决方案 一为Pager,一为webtest 下载后请将两个解决方案合并一下,即新的解决方案包括两个项目 Pager WebTest 详细介绍看以下链接 ...
讲座内容: Microsoft AJAX Library为了便于开发AJAX应用提出了一个异步通信层,它是整个ASP.NET AJAX客户端AJAX请求的基础。事实上,我们能够基于这个通信平台进行轻松的扩展,使它能够支持不同的通信方式。这节...
使用这个异步通信层可以方便地发出AJAX请求,而且事实上,整个ASP.NET AJAX的客户端与服务器端的通信都是由它负责的。我们这节课将讲解一下这个异步通信层的使用方式,它可以方便我们做“纯粹”的AJAX应用。
讲座内容: 利用面向对象类型系统是扩展组件的常用方法,但是我们在客户端进行开发的时候也不能忘记正在使用的是JavaScript这个非常灵活的动态语言,使用一些特殊的方式来扩展组件有时候会得到更好的效果。...
本文主要列举了省市三级联动的DropDownList+Ajax的三种框架(aspnet/Jquery/ExtJs)示例。前段时间需要作一个的Web前端应用,需要用多个框架,一个典型的应用场景是省市三级联动,基于此应用,特将三种主要的ajax框架...
在IE中调用javascript打开Excel的代码(downmoon原作)
sqlserver 存储过程中的top+变量使用分析(downmoon) ,需要的朋友可以参考下。
获取远程网页的内容之二(downmoon原创)
获取远程网页的内容之一(downmoon原创)
在使用vs.php+ sourcesafe管理代码时,发现有时候并不能从vs.net IDE中正确获取phpproj文件下的所有文件。但从sourcesafe IDE下却可以。
在某种程度上,有了它,我们再也不用为不能全面及时检测众多浏览器和五花八门的js/css不兼容性而痛不欲生了。...http://blog.csdn.net/downmoon/archive/2010/10/17/5946465.aspx 欢迎联系邀月 3w@live.cn