URL参数的加号等特殊字符的处理

之前没有遇见过,这样的问题,所以都没有考虑过。有一个参数里面有一个“+”号,接收的时候+不见了,如address="上海黄埔+上海浦东",接收的时候变成“上海黄埔上海浦东”了。

string url = "/xxx/xxx.aspx?xx=" + xx+ "&name=" + contextWai.Server.UrlEncode(name) + "&haha=" + contextWai.Server.UrlEncode(haha) + "&bedName=" + contextWai.Server.UrlEncode(bedName) + "&star=" + star + "&address=" + contextWai.Server.UrlEncode(address) + "&pic=" + contextWai.Server.UrlEncode(pic) + "&zaocan=" + contextWai.Server.UrlEncode(zaocan) + "&kuandai=" + contextWai.Server.UrlEncode(kuandai) + "&mianji=" + contextWai.Server.UrlEncode(mianji) + "&price=" + price + "&priceId=" + priceId + "&rid=" + rid + "&sign=";

这个是我用ajax在一般处理程序里加上对称加密签名的。编码一下即可,Server.UrlEncode(),接收的时候不用解码Server.UrlDecode().

function login(url){
    location.href=url;
}

之前我把上面的URL直接拼接login方法的,结果不行。跳转过去的时候,参数变成了跟没有编码时候的一样了。

所以,得把他赋值给控件的属性,调用方法的时候再获取。

如果是用表单提交,应该要加上

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

如果在在js里面拼接

JS:var url = "/xxx/xxx.aspx?xx=" + escape(xx);
C#:string xx=Server.UrlDecode(Request.QueryString["Name"]);


原文地址:https://www.cnblogs.com/hougelou/p/3135333.html