Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从表单GET查询参数将url“+”解码为“%20”_Javascript_Url_Urlencode_Url Encoding - Fatal编程技术网

Javascript 从表单GET查询参数将url“+”解码为“%20”

Javascript 从表单GET查询参数将url“+”解码为“%20”,javascript,url,urlencode,url-encoding,Javascript,Url,Urlencode,Url Encoding,我在html页面中使用meta refresh标记。html页面有一个表单。自动刷新此页面时,所有表单参数都会作为HTTP GET参数附加到url 问题: 所有空格字符(即“%20”)都会自动转换为“+”。但是我的表单查询参数本身的内容中可能有“+”字符。所以 如何停止用“+”替换的空格并返回到用“%20”编码的空格? 或 如何正确编码和解码表单参数,以正确区分表示“+”的空间和文本参数“+”? 例如 properTitle=这是正确解码用“+”替换的HTTP表单参数空间的示例 编码器组件属性:

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

问题: 所有空格字符(即“%20”)都会自动转换为“+”。但是我的表单查询参数本身的内容中可能有“+”字符。所以

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

如何正确编码和解码表单参数,以正确区分表示“+”的空间和文本参数“+”? 例如

properTitle=这是正确解码用“+”替换的HTTP表单参数空间的示例 编码器组件属性: 此%20为%20示例%20,用于%20正确解码%20HTTP%20表单%20参数%20space%20已将%20替换为%20“%2B”

EscapeProperty:此%20为%20示例%20,用于%20正确解码%20HTTP%20表单%20参数%20space%20已将%20替换为%20%27+%27

元刷新后 skewedTitle=This+is+example+for+正确+解码+HTTP+表单+参数+空格+替换为“+”

decodeURIComponentskewedTitle:此+是+示例+for+正确+解码+HTTP+表单+参数+空格+替换为+'+

escapeskewedTitle:此+是+示例+for+正确+解码+HTTP+表单+参数+空格+替换为+%27%252B%27

注:我已经提到了以下类似的问题,但没有帮助

编辑1: 多亏了@Bergi,我在刷新之前手动将“+”字符编码为“%2b”,从而解决了我的问题。元刷新后“%20”被转换为“+”,这与“%2b”不同。难道没有合适的方法来处理这种编码和解码吗?

使用decodeURIComponent来解码URL

编辑

那就做吧

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

看看下面的内容,可能会对你有所帮助-

HttpUtility.UrlEncodeStack溢出->堆栈+溢出 Uri.EscapeUriStringStack溢出->堆栈%20溢出 Uri.EscapeDataStringStack+溢出->还将+编码到%2b-->堆栈%20%2b%20%20Overflow


听起来您真正的问题是原始URL包含+个字符,这些字符应编码为%2B。您需要解决这个问题。我真正的问题是将空间编码为“+”,如果原始参数也包含其本机形式的“+”,这会使我感到困惑。如何阻止url空间被编码为“+”?+是一种完全可以接受的url空间编码方式。如果原始参数包含表示+而不是空格的literal+,则原始参数的编码不正确。正确编码时,下面的参数值应该如何显示?此包含+@Sourabh:此%20包含%20%2B%20或此+包含+%2B+Hi Rajat_RJT,Uri.EscapeDataString似乎是C特定的。JS/JQuery中有没有等效的稳定方法?嘿,Sourabh,我基本上使用C,但是HttpUtility.UrlDecode可能会帮助你
str = str.replace("%20", " ");