【问题标题】:php javascript url encodingphp javascript url编码
【发布时间】:2010-11-09 11:28:41
【问题描述】:

我有一个 html 文本。我已经使用 urlencode 函数在 php 中对其进行了编码。 我想在 javascript 中解码该文本。 当我在 javascript 中使用 unescape 函数时,它会替换所有特殊字符,但 sapce 会被“+”替换。我怎样才能正确地做到这一点,以便空间被替换为空间本身???

【问题讨论】:

  • 查看我的答案here。希望对您有所帮助。

标签: php javascript urlencode


【解决方案1】:

尝试改用 rawurlencode - urlencode 出于“历史”原因做一些不同的事情。

更多信息请参见http://us.php.net/manual/en/function.urlencode.php

【讨论】:

    【解决方案2】:

    PHP rawUrlEncode() == JavaScript encodeURIComponent()

    PHP rawUrlDecode() == JavaScript decodeURIComponent()

    【讨论】:

    • 请注意 php urlencode 与 javascript 不兼容,因此您应该改用 rawUrlEncode
    • 为我工作 (((PHP))) $msg = array(); $msg['adds'] = rawUrlEncode($complexAddsWithHTMLMarkup);回声 json_encode($msg); ......(((jQuery ajax dataType json))) decodeURIComponent(msg.adds);
    • 不幸的是,这个答案对于某些角色来说是错误的。在 php rawurlencode(")") == "%29" 而在 javascript encodeURIComponent(")") == ")".
    • @RégisB。为了遵守 RFC 3986,对MDN 进行了修复。在底部有一个名为fixedEncodeURIComponent 的函数
    【解决方案3】:

    试试这个:

    return decodeURIComponent((str + '').replace(/\+/g, '%20'));
    

    来源:http://phpjs.org/functions/urldecode:572

    【讨论】:

    • 我觉得应该是replace(/\+/g, ' '))
    【解决方案4】:

    括号是本文中所说的所有内容的例外。

    极客模式开启:

    PHP rawUrlEncode() !== JavaScript encodeURIComponent()
    

    但真实

    PHP rawUrlEncode() == JavaScript encodeURIComponent()
    

    换句话说,有很多特殊字符在 encodeURIComponent 中时在 rawurlencode 中不被视为安全的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      相关资源
      最近更新 更多