【问题标题】:How to decode a string in JavaScript?如何在 JavaScript 中解码字符串?
【发布时间】:2012-03-13 20:59:50
【问题描述】:

这对我不起作用:

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

如何正确解码字符串?

【问题讨论】:

标签: javascript


【解决方案1】:

怎么样:

unescape("Collection%3A 9 Bad Interviews With Former GOP Presidential Candidates")

【讨论】:

【解决方案2】:

使用decodeURIComponent:

var decoded = decodeURIComponent(foo);

decodeURI 如您所见有一些问题。 decodeURIComponent 是这项工作的最佳实践工具。

【讨论】:

    【解决方案3】:

    decodeURIdecodeURIComponent 之间的区别

    主要区别是:

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

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

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

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

  • 【讨论】:

      【解决方案4】:

      decodeURI() 期望的 URI 实际上如下所示:

      收藏:%209%20Bad%20Interviews%20With%20Former%20GOP%20Presidential%20Candidates

      查看this jsFiddle 说明我的意思。你会想要decodeURIComponent

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-01
        • 2018-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多