【发布时间】: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%20或This+contains+%2B+
标签: javascript url urlencode url-encoding