js对字符串进行编码

1.encodeURI()把字符串作为 URI整体进行编码,所以URI组件中的特殊分隔符号(;/:@&=+$?#),encodeURI() 函数不会进行转义。该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码:encodeURI不会对:/?&= 进行编码;

encodeURI()不会被此方法编码的字符:! @ # $ & * ( ) = : / ; ? + '

 encodeURI("http://www.w3school.com.cn")
  输出http://www.w3school.com.cn

2.encodeURIComponent()把字符串作为 URI 组件的一部分(如path/query/fragment等)进行编码,所以用于分隔 URI 各个部分的特殊分隔符号(;/?:@&=+$,#)也会被转义。返回值中某些字符将被十六进制的转义序列替换。该方法也不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码:

encodeURI 不对下列字符进行编码:“:”、“/”、“;”和“?”。 encodeURIComponent则会相应的:/?&= 编码成%3A、%2F、%3F、%26、%3D。

不会被此方法编码的字符:! * ( ) '

 encodeURIComponent("http://www.w3school.com.cn")
  输出http%3A%2F%2Fwww.w3school.com.cn

请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,则其中的斜杠也将被编码,这样,当该字符串作为请求发送到 Web 服务器时它将是无效的。如果字符串中包含多个 URI 组件,请使用 encodeURI 方法进行编码。

3.decodeURI()解码URI中被转义的字符

decodeURIComponent(%E4%BD%A0%E5%A5%BDjavascript);
  输出你好javascript

encodeURI 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURI,则将返回初始的字符串。

4.decodeURIComponent 方法:返回统一资源标识符 (URI) 的一个已编码组件的非编码形式。

5.escape()用于对字符串进行编码,并返回编码字符串。但目前已不推荐使用该函数对URI进行编码。

:?&都被转码了,而/没有,w3school解释是,escape函数会对ascii码中字母、数字及符号( * @ - _ + . / )之外的所有字符进行编码。

var str = "http://localhost:8080/Product/index?id=123&attr=456&area=中国";
console.log(escape(str));

escape对汉字“中国”编码后结果与前两者不同。

6. unescape 方法:从用 escape 方法编码的 String 对象中返回已解码的字符串。

function unescape(charString : String) : String

说明:unescape 方法返回一个包含 charstring 内容的字符串值。所有以 %xx 十六进制形式编码的

字符都用 ASCII 字符集当中等效的字符代替。(以 %uxxxx 格式(Unicode 字符)编码的字符用十六

进制编码 xxxx 的 Unicode 字符代替。)

注意:unescape 方法不应用于解码“统一资源标识符”(URI)。请改用 decodeURI 和 decodeURIComponent 方法。

猜你喜欢

转载自blog.csdn.net/qq_35029061/article/details/82710585