url传参数出现乱码解决方法

  

(1)平常的解决方法:在web.config中添加如下代码

<system.web> 
<globalization requestEncoding="gb2312"  responseEncoding="gb2312" />

</system.web> 

   (2)如果是页面传值:
function xiugai(VolumeHouseName,id,DepartmentId,Remark)
{
    window.open ("add.aspx?id="+id+"&name="+encodeURIComponent(VolumeHouseName)+"&Remark="+encodeURIComponent(Remark)+"&DepartmentId="+DepartmentId+"", "newwindow", "height=158, width=400, toolbar= no, menubar=no, scrollbars=no, resizable=no, location=no, status=no,top=200,left=500");
}
需要加上encodeURIComponent() 括号内为需要传递的值

 

 (3)

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

>> 进行传递

<script language="JavaScript">

function GoUrl()

{

var Name = "中文参数";

location.href = "B.aspx?Name="+escape(Name) ;

}

<body onclick="GoUrl()">

>> 进行接收

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

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

总结:

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

 (3)在test.aspx中,只要获取title参数的值并显示出来即可,本来用Request["title"]就可解决的问题却因链接所处页面的编码不同而变得复杂起来:

  当链接所处的页面是用GB2312编码时,如果test.aspx也是GB2312则获取的参数值不乱码,否则乱码;

  当链接所处的页面是用UTF-8编码时,如果test.aspx也是UTF-8则获取的参数值不乱码,否则乱码;

  gb.htm:

  

      < html>

  < head>

  < meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

  < title>gb2312测试页< /title>

  < /head>

  < body>

  < a href="#" onclick="window.open('http://www.aaa.com');">Links< /a>

  < /body>

  < /html>

  utf8.htm:

  < html>

  < head>

  < meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  < title>utf-8测试页< /title>

  < /head>

  < body>

  < a href="#" onclick="window.open('http://www.aaa.com');">Links< /a>

  < /body>

  < /html>

test.aspx.cs:

  

      private void Page_Load(object sender, System.EventArgs e)

  {

  String Request1;

  Request1 = Request["title"];

  Response.Write(Request1);

  }

  有没办法让test.aspx不论URL中的参数以何种方式编码都能正常的获取显示呢?通过配置web.config的< globalization requestEncoding="gb2312|utf-8" />都只会顾此失彼,不能完美的解决我们的问题。最终,在老农的提示下使用JS的escape问题得以完美解决:

  gb.htm:

  

      < html>

  < head>

  < meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

  < title>gb2312测试页< /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="#" onclick="winopen('http://www.aaa.com">Links< /a>

  < /body>

  < /html>

  utf8.htm:

  < html>

  < head>

  < meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  < title>utf-8测试页< /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="#" onclick="winopen('http://www.aaa.com');">Links< /a>

  < /body>

  < /html>

  现在完全不用考虑链接所在页面的编码方式,也不用绞尽脑汁去想如何在test.aspx对不同编码的参数值进行转换,只需用一个escape就够了

原文地址:https://www.cnblogs.com/duyanli/p/2873755.html