URL中文乱码的问题,特殊字符的解决办法

时间:2023-01-06 12:53:47

代码:

javascript:

var rul = "/controller/action?param=encodeURIComponent('测试参数')";
var encodedUrl = encodeURI(url);

服务器端代码:

string code = HttpUtility.UrlDecode(param, Encoding.UTF8);


注:

encodeURIComponent() 

函数将转义用于分隔 URI 各个部分的标点符号

 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

 encodeURI() 

该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#


简单点说,encodeURIComponent()就是对uri中的参数单独编码的,因为它会把uri中的分隔符也进行转换,而 encodeURI()则是对整个uri进行编码的,它不会转义uri的分隔符。