【问题标题】:Decode url '+' to '%20' from Form GET query parameters将表单 GET 查询参数中的 url '+' 解码为 '%20'
【发布时间】:2015-04-20 14:26:49
【问题描述】:

我在我的 html 页面中使用 meta-refresh 标签。 html页面有一个表单。当此页面自动刷新时,所有表单参数都作为 HTTP GET 参数附加到 url。

问题: 所有空格字符,即 '%20' 会自动转换为 '+'。但我的 FORM 查询参数本身可能在其内容中包含“+”字符。所以

  • 如何停止用“+”替换的空格并返回到用“%20”编码的空间?

  • 如何正确编码和解码表单参数以正确区分代表空格的“+”和文字参数“+”?

E.G.

properTitle = "这是正确解码 HTTP 表单参数空间替换为 '+' 的示例" encodeURIComponent(properTitle) : This%20is%20example%20for%20correctly%20decoding%20HTTP%20Form%20parameters%20space%20replaced%20with%20'%2B'

escape(properTitle) : This%20is%20example%20for%20correctly%20decoding%20HTTP%20Form%20parameters%20space%20replaced%20with%20%27+%27

元刷新后 skewedTitle = "this+is+example+for+正确+解码+HTTP+Form+参数+空格+替换+带'+'"

decodeURIComponent(skewedTitle) : this+is+example+for+正确+解码+HTTP+Form+参数+空格+replaced+with+'+

escape(skewedTitle) : this+is+example+for+correctly+decoding+HTTP+Form+parameters+space+replaced+with+%27%252B%27

P.S:我已经参考了以下类似问题,但没有帮助。

When to encode space to plus (+) or %20?

In a URL, should spaces be encoded using %20 or +?

编辑 1: 感谢@Bergi,我通过在刷新之前手动将“+”字符编码为“%2b”解决了我的问题。元刷新后,'%20' 转换为与 '%2b' 不同的 '+'。难道不应该有一个适当的方法来处理这种编码和解码吗?

【问题讨论】:

  • 听起来您真正的问题是原始 URL 包含应编码为 %2B+ 字符。你需要解决这个问题。
  • 我真正的问题是空间被编码为“+”,如果原始参数也包含原始形式的“+”,这会让我感到困惑。如何停止将 url 空间编码为“+”?
  • + 是在 URL 中编码空格的完全可接受的方式。如果原始参数包含文字 +,这意味着 + 而不是空格,则原始参数编码不正确。
  • 正确编码后参数值以下应该如何? "这包含 + "
  • @Sourabh:This%20contains%20%2B%20This+contains+%2B+

标签: javascript url urlencode url-encoding


【解决方案1】:

使用decodeURIComponent() 解码网址。

编辑

var str = "Happy%20Day";

然后做

str = str.replace("%20", " ");

【讨论】:

    【解决方案2】:

    看看下面的,可能对你有帮助-

    HttpUtility.UrlEncode("Stack Overflow") --> "Stack+Overflow"

    Uri.EscapeUriString("Stack Overflow") --> "Stack%20Overflow"

    Uri.EscapeDataString("Stack + Overflow") --> Also encodes "+" to "%2b" ---->Stack%20%2B%20%20Overflow

    【讨论】:

    • 嗨 Rajat_RJT,Uri.EscapeDataString() 似乎是 C# 特定的。 JS/JQuery 稳定的任何等效方法?
    • 嘿 Sourabh,我基本上使用 C#,但“HttpUtility.UrlDecode”可能会对你有所帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多