JavaScript函数decodeURIComponent和decodeURI有什么区别?
当前回答
encodeURIComponent 不逃了出来:
A-Z a-z 0-9 - _ . ! ~ * ' ( )
encodeURI () 不逃了出来:
A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI
其他回答
因为我有同样的问题,但在这里没有找到答案,我做了一些测试,以弄清楚到底有什么不同。 我这样做是因为我需要某些东西的编码,这与URL/URI无关。
encodeURIComponent("A")返回"A",它不将"A"编码为"%41" decodeURIComponent("%41")返回"A"。 encodeURI("A")返回"A",它不将"A"编码为"%41" decodeURI("%41")返回"A"。
这意味着两者都可以解码字母数字字符,即使他们没有编码它们。然而……
encodeURIComponent("&")返回"%26"。 decodeURIComponent("%26")返回"&"。 encodeURI("&")返回"&"。 返回“%26”。
尽管encodeURIComponent不编码所有字符,但decodeURIComponent可以解码%00到%7F之间的任何值。
注意:如果您尝试解码%7F以上的值(除非它是unicode值),那么您的脚本将失败,并报出“URI错误”。
encodeURIComponent/decodeURIComponent()几乎总是您想要使用的对,用于在URI部分中连接和分离文本字符串。
encodeURI不太常见,而且名字很容易误导人:它应该被称为fixBrokenURI。它取一些接近URI,但其中包含无效字符(如空格)的内容,并将其转换为真正的URI。它可以有效地修复来自用户输入的无效URI,还可以用于将IRI(包含纯Unicode字符的URI)转换为普通URI(使用%-转义的UTF-8对非ascii进行编码)。
encodeURI应该被命名为fixBrokenURI(), decodeURI()也可以被命名为potentiallyBreakMyPreviouslyWorkingURI()。我想不出它在任何地方有什么正当用途;避免的。
encodeURIComponent () 将输入转换为url编码 字符串 encodeURI () url编码输入,但是 假设给出了完整的URL,那么 通过不编码返回一个有效的URL 协议(例如:http://)和 主机名(例如: www.stackoverflow.com)。
decodeURIComponent()和decodeURI()与上面的相反
URI编码:
encodeURI()方法不编码:
, / ? : @ & = + $ * #
例子
URI: https://my test.asp?name=ståle&car=saab
Encoded URI: https://my%20test.asp?name=st%C3%A5le&car=saab
编码URI组件:
encodeURIComponent()方法还编码:
, / ? : @ & = + $ #
例子
URI: https://my test.asp?name=ståle&car=saab
Encoded URI: https%3A%2F%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab
欲了解更多:W3Schoools.com
decodeURIComponent将解码URI的特殊标记,如&,?,#等,decodeURI将不会。