这对我不起作用:
var foo = "Collection%3A 9 Bad Interviews With Former GOP Presidential Candidates";
console.log(decodeURI(foo));
输出:
Collection%3A 9 Bad Interviews With Former GOP Presidential Candidates
如果你在这样的网站上输入foo字符串,这是不正确的:
http://meyerweb.com/eric/tools/dencoder/
它显示正确的输出,即:
Collection: 9 Bad Interviews With Former GOP Presidential Candidates
如何正确解码字符串?
答案 0 :(得分:9)
主要区别是:
因此,在encodeURIComponent中,这些分隔符的编码也因为它们被视为文本而不是特殊字符。
现在回到解码函数之间的区别,每个函数解码由其对应的编码对应生成的字符串,处理特殊字符的语义及其处理。
所以在你的情况下decodeURIComponent完成工作
答案 1 :(得分:4)
var decoded = decodeURIComponent(foo);
正如您所见, decodeURI
存在一些问题。 decodeURIComponent
是这项工作的最佳实践工具。
答案 2 :(得分:3)
怎么样:
unescape("Collection%3A 9 Bad Interviews With Former GOP Presidential Candidates")
答案 3 :(得分:1)
URI decodeURI()
实际上看起来像这样:
收集:%209%20Bad%20Interviews%20With%20Former%20GOP%20Presidential%20Candidates
查看this jsFiddle证明我的意思。您需要decodeURIComponent代替。