Jon*_*ury 334 javascript
JavaScript函数decodeURIComponent
和有decodeURI
什么区别?
Mah*_*eTo 373
为了解释这两者之间的区别,让我解释一下encodeURI和encodeURIComponent之间的区别.
主要区别在于:
因此,在encodeURIComponent中,这些分隔符也被编码,因为它们被视为文本而不是特殊字符.
现在回到解码函数之间的差异,每个函数解码由其相应的编码对应物生成的字符串,处理特殊字符的语义及其处理.
bob*_*nce 112
encodeURIComponent/decodeURIComponent()几乎总是你想要使用的对,用于连接和拆分URI部分中的文本字符串.
encodeURI不常见,误导性地命名:它应该被称为fixBrokenURI.它需要的东西几乎是一个URI,但它中包含空格等无效字符,并将其转换为真正的URI.它可以有效地用于修复用户输入中的无效URI,它还可以用于将IRI(带有Unicode Unicode字符的URI)转换为普通URI(使用%-escaped UTF-8编码非ASCII ).
decodeURI解码与decodeURIComponent相同的字符,除了一些特殊的字符.它被提供为encodeURI的反转,但你仍然不能指望它返回你最初输入的相同 - 参见例如.decodeURI(encodeURI('%20 '));
.
其中encodeURI应该命名为fixBrokenURI(),decodeURI()同样可以被称为potentialBreakMyPreviouslyWorkingURI().我认为在任何地方都没有有效的用途; 避免.
Jas*_*n S 60
js> s = "http://www.example.com/string with + and ? and & and spaces";
http://www.example.com/string with + and ? and & and spaces
js> encodeURI(s)
http://www.example.com/string%20with%20+%20and%20?%20and%20&%20and%20spaces
js> encodeURIComponent(s)
http%3A%2F%2Fwww.example.com%2Fstring%20with%20%2B%20and%20%3F%20and%20%26%20and%20spaces
Run Code Online (Sandbox Code Playgroud)
看起来像encodeURI
通过编码空格和一些其他(例如不可打印的)字符来生成"安全"URI,而encodeURIComponent
另外编码冒号和斜杠以及加号字符,并且用于查询字符串.+和?的编码 和&在这里特别重要,因为这些是查询字符串中的特殊字符.
小智 27
由于我有同样的问题,但没有在这里找到答案,我做了一些测试,以弄清楚实际上是什么区别.我做了这个,因为我需要编码的东西,这不是URL/URI相关.
encodeURIComponent("A")
返回"A",它不会将"A"编码为"%41"decodeURIComponent("%41")
返回"A".encodeURI("A")
返回"A",它不会将"A"编码为"%41"decodeURI("%41")
返回"A".- 这意味着它们都可以解码字母数字字符,即使它们没有对它们进行编码.然而...
encodeURIComponent("&")
返回"%26".decodeURIComponent("%26")
返回"&".encodeURI("&")
返回"&".decodeURI("%26")
返回"%26".即使encodeURIComponent不对所有字符进行编码,decodeURIComponent也可以解码%00和%7F之间的任何值.
注意:如果您尝试解码高于%7F的值(除非它是unicode值),那么您的脚本将失败并显示"URI错误".
Rus*_*Cam 23
encodeURIComponent()
将输入转换为URL编码的字符串
encodeURI()
对输入进行URL编码,但假定给出了完整的URL,因此通过不对协议(例如http://)和主机名(例如 www.stackoverflow.com)进行编码来返回有效的URL .
decodeURIComponent()
与decodeURI()
上述相反
小智 6
encodeURIComponent 未转义:
A-Z a-z 0-9 - _ . ! ~ * ' ( )
Run Code Online (Sandbox Code Playgroud)
encodeURI() 未转义:
A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
Run Code Online (Sandbox Code Playgroud)
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
归档时间: |
|
查看次数: |
111214 次 |
最近记录: |