如果是从 .HTML 文件向 .Aspx 文件进行传递中文参数的话(即用 Redirect()方法进行 Url 转换)。一样要将传递的中文参数进行编码,在接收时再进行解码。
>> Html文件中进行中文参数传递
<script language="JavaScript">
function GoUrl()
{
var Name = "中文参数";
location.href = "http://www.qujingwang.com/user/register.aspx?Name="+escape(Name) ;
}
<body onclick="GoUrl()">
>> Aspx文件中进行中文参数接收
string Name = Request.QueryString["Name"];
Response.Write(Server.UrlDecode(Name)) ;
有没办法让Aspx的URL中的接收参数,不论以何种方式编码都能正常的获取显示呢?通过配置web.config的<globalization requestEncoding="gb2312|utf-8" />都只会顾此失彼,不能完美的解决我们的问题。最终,使用JS的escape问题得以完美解决:
1、Html传递参数文件如下,Aspx接收参数文件不用做任何改动。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
//<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 两种编码都可以,但一次只能选一种。
<title>中文参数传递测试页html文件</title>
<script language="javascript">
function winopen(url,width,height)
{
var newurl,arrurl;
if(typeof(url) == "undefined" || url == "")
{
return ;
}
else
{
if(url.indexOf("?") == -1)
{
newurl = url;
}
else
{
newurl = url.substring(0,url.indexOf("?")+1);
arrurl = url.substring(url.indexOf("?")+1).split("&");
for(var i =0;i<arrurl.length;i++)
{
newurl += arrurl[i].split("=")[0] + "=" +
escape(arrurl[i].split("=")[1]) + "&";
}
newurl = newurl.substring(0,newurl.length-1);
}
}
if(typeof(width) != "number" || typeof(height) != "number")
{
window.open(newurl);
}
else
{
window.open(newurl,"","width=" + width + ",height=" + height);
}
}
</script>
</head>
<body>
<a href="#" title="家电" onclick="winopen('http://www.qujingwang.com/User/SearchResult.aspx?SearchType=5&SearchText=家电');" >家电</a></body>
</html>