我在html页面中使用了元刷新标记。 html页面有一个表单。当此页面自动刷新时,所有表单参数都作为HTTP GET参数附加到url。
问题: 所有空格字符,即'%20'都会自动转换为'+'。但我的FORM Query params本身可能会有'+'字符。所以
OR
E.G。
properTitle =“这是正确解码用'+'替换的HTTP表单参数空间的示例” encodeURIComponent(properTitle): 此%图20是%20example%20for%20correctly%20decoding%20HTTP%20Form%20parameters%20space%20replaced%20with%20 '%2B'
escape(properTitle):此%20is%20example%20for%20correctly%20decoding%20HTTP%20Form%20parameters%20space%20replaced%20with%20%27 +%27
元刷新后 skewedTitle =“这+是+示例+ +正确+解码+ HTTP +表格+参数+空格+替换+ +'+'”
decodeURIComponent(skewedTitle):这个+是+示例+ +正确+解码+ HTTP +表格+参数+空格+替换+ + + + +
escape(skewedTitle):这个+是+示例+ +正确+解码+ HTTP +表格+参数+空格+替换+ + +%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'不同。难道不应该有适当的方法来处理这种编码和解码吗?
答案 0 :(得分:0)
使用decodeURIComponent()
解码网址。
修改强>
var str = "Happy%20Day";
然后做
str = str.replace("%20", " ");
答案 1 :(得分:0)
看看以下内容,可能对您有帮助 -
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