如何解码JavaScript中的字符串?

时间:2012-03-13 20:59:50

标签: javascript

这对我不起作用:

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

如何正确解码字符串?

4 个答案:

答案 0 :(得分:9)

decodeURIdecodeURIComponent

之间的差异

主要区别是:
  

  • encodeURI旨在用于完整的URI   
  • encodeURIComponent旨在用于.. well .. URI组件,它是位于分隔符之间的任何部分(; /?:@& = + $,#)。

    因此,在encodeURIComponent中,这些分隔符的编码也因为它们被视为文本而不是特殊字符。

    现在回到解码函数之间的区别,每个函数解码由其对应的编码对应生成的字符串,处理特殊字符的语义及其处理。

    所以在你的情况下decodeURIComponent完成工作

  • 答案 1 :(得分:4)

    使用decodeURIComponent

    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代替。