前台用js传递参数到.net页面,。
 出现了乱码,如参数:博士伦润明护理液(355+120ml+双联盒)隐形眼镜护理液
在net页面接收就变成乱码,。
 取到的值为: 鍗氬+浼︽鼎鏄庢姢鐞嗘恫锛?55 120ml 鍙岃仈鐩掞級闅愬舰鐪奸暅鎶ょ悊娑?
------------
web.config中已经加入:
<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312"/>如果在js页面中用 escape(proname)方法,。
 那么在.net页面接收到的值为:博士伦润明护理液(355 120ml 双联盒)隐形眼镜护理液加号消失了,变成空格;

解决方案 »

  1.   

      $(function () {
                var para = '博士伦润明护理液(355+120ml+双联盒)隐形眼镜护理液';
                para = para.replace(/\+/g, "%2B"); //处理+号
                window.location = 'A.aspx?s=' + encodeURI(para);
            });后台接受
     string s = HttpUtility.UrlDecode(Request.QueryString["s"]);
      

  2.   

    刚又测了一下,是浏览器的问题,。
     火狐下面接收到的参数是乱码,
      IE6跟360下接收到的参数是 改变了值了的[加号变成了空格],。
    js中加不加escape()方法都一样,。
      

  3.   

    1. "+"号:JavaScript解析为字符串连接符,所以服务器端接收数据时"+"会丢失。 2. "&":JavaScript解析为变量连接符,所以服务器端接收数据时&符号以后的数据都会丢失。因此,如果是在后台操作,先Server.UrlEncode,然后解码如果实在前台,那么可以首先替换为在后台编码后的符号  + 对应 %2B
      

  4.   

    URLEncoder.encode(URLEncoder.encode("程序员","utf-8"),"utf-8")
      

  5.   

    4楼,问下,是不是只要处理 + 跟 & 这两个字符就可以了?
     还有,这样只能在IE跟360下有效,火狐下依然是乱码!