zoukankan      html  css  js  c++  java
  • 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就够了

  • 相关阅读:
    Git 中 .gitignore 的配置语法
    DMX512协议
    k8s 报错总结
    yum 源配置
    docker 安装 docker-compose
    docker 搭建 Harbor 仓库
    linux 远程执行命令
    远程从服务器A拷贝文件到服务器B
    docker 搭建私服仓库
    awk和xargs清除docker 容器、镜像
  • 原文地址:https://www.cnblogs.com/duyanli/p/2873755.html
Copyright © 2011-2022 走看看