encodeURIComponent和URLSearchParams

编程语言
0 509

url处理:encodeURIComponent和URLSearchParams
encodeURIComponent()

函数通过将一个,两个,三个或四个表示字符的UTF-8编码的转义序列替换某些字符的每个实例来 UTF-8 编码 URI(对于由两个“代理”字符组成的字符而言,将仅是四个转义序列) 。

不转义字符:A-Z a-z 0-9 - _ . ! ~ * ' ( )

    encodeURIComponent() 和 encodeURI 有以下几个不同点:

    var set1 = ";,/?:@&=+$";  // 保留字符

    var set2 = "-_.!~*'()";   // 不转义字符

    var set3 = "#";           // 数字标志

    var set4 = "ABC abc 123"; // 字母数字字符和空格

    console.log(encodeURI(set1)); // ;,/?:@&=+$

    console.log(encodeURI(set2)); // -_.!~*'()

    console.log(encodeURI(set3)); // #

    console.log(encodeURI(set4)); // ABC%20abc%20123 (the space gets encoded as %20)

    console.log(encodeURIComponent(set1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24

    console.log(encodeURIComponent(set2)); // -_.!~*'()

    console.log(encodeURIComponent(set3)); // %23

    console.log(encodeURIComponent(set4)); // ABC%20abc%20123 (the space gets encoded as %20)

     

字符串encodeURIComponent(编码)/decodeURIComponent(解码)

建议使用URL编码存储URLEncoder.encode(str_date,"utf-8");,URL解码解析URLDecoder.decode(time, "utf-8");


URL(统一资源定位符)编码方法是属于 Global 全局对象的,encodeURI() 和 encodeURIComponent() 方法可以对URI(通用资源标示符)进行编码,以便发送给浏览器,有效的URI中不能包含某些字符,例如空格。而这两个URI编码方法就可以对URI进行编码,它们用特殊的UTF-8编码替换所有无效的字符,从而让浏览器能够接受和理解。

其中 encodeURI() 主要用于整个URI,而 encodeURICompoent() 主要用于对URI中的某一段进行编码。它们的主要区别在于,encodeURI() 不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号和井字号;而 encodeURIComponent 则会对它发现的任何非标准字符进行编码。

与上述两个方法相对应的两个方法分别是 decodeURI() 和 decodeURIComponent() 。其中,decodeURI() 只能对使用 encodeURI() 替换的字符进行解码。decodeURIComponent() 能够解码使用 encodeURIComponent() 编码的所有字符串。