URL 传参编码&解码

以前做好的一个页面,突然被告知乱码了,当时吓一跳,好在没有影响线上数据,于是找出原因,以前开发项目几乎全是在火狐上测试使用的,然后今天早上找了一下,发现火狐不报错,其他浏览器报错,于是用IE试了一下,果真就乱码了再见


条件如下:

url参数中有中文有英文,有数字,由于懒,就不对URL 进行编码了 ,其他的不会受到影响,于是就只把中文的参数进行了编码,传到后台使用C#进行解码。

先科普一下它的家人们:

JavaScript中编码方法有:escape、encodeURI、encodeURIComponent

C#中编码主要方法有:HttpUtility.UrlEncode、Server.UrlEncode、Uri.EscapeUriString、Uri.EscapeDataString

escape:

对ASCII符号编码

encodeURI

对于网址编码,不包含参数

encodeURIComponent

对参数进行编码

------------------------------------------------------------------------------------------------------------------------------------------------------------------

以下是使用方法:

var strUrl = "TradeDate?country=" + encodeURIComponent(country) + "&countryEn=" + countryEn + "&startTime=" + sDate + "&endTime=" + eDate + "&pi=" + viewmodel.pageIndex() + "&pz=" + viewmodel.pageSize();

这里country 国家是中文参数 ,于是在传值的时候先进行编码,到了后台,C#部分代码是这样获取的:

string newCountry = HttpUtility.UrlDecode(country, Encoding.GetEncoding(936));

引用的是using System.Text;

UrlDecode(String, Encoding)该方法是用来对指定编码对象将URL编码的字符串转换为已解读的字符串。

代码页
Name 显示名称
936
gb2312 简体中文 (GB2312)
65001
utf-8 Unicode (UTF-8)

因为我们传过来的是简体中文,所以指定解码方案的 Encoding 用936。

注*:

如果在 HTTP 流中传递如空格和标点字符,它们可能会错误地解释在接收端。  URL 编码转换为字符实体等效项; 不允许在 URL 中的字符URL 解码反转的编码。  例如,在嵌入到要在 URL 中,字符传输的文本块中 < 和 > 编码为 %3 c 和 %3e。

若要对 Web 应用程序之外的值进行编码或解码,请使用 WebUtility 类。


以上。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值