Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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
Ruby on rails Rails:使用'+';正在设置为空白_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails:使用'+';正在设置为空白

Ruby on rails Rails:使用'+';正在设置为空白,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有包含“+”符号的post数据。一旦发送到服务器,原始post数据将显示“+”号,但一旦post数据发送到参数散列中,“+”号已转换为空。有没有办法让它不这样做?尝试用%2B替换+。尝试用%2B替换+。不知道为什么会发生这种情况。正常情况下,+符号可以传递到参数。你能发布你的rails版本吗。还可以尝试用“+”或其CGI等价物“%2B”转义“+”符号,看看它是否有区别。不确定为什么会发生这种情况。正常情况下,+符号可以传递到参数。你能发布你的rails版本吗。还可以尝试将“+”符号转义为“+”

我有包含“+”符号的post数据。一旦发送到服务器,原始post数据将显示“+”号,但一旦post数据发送到参数散列中,“+”号已转换为空。有没有办法让它不这样做?

尝试用%2B替换+。

尝试用%2B替换+。

不知道为什么会发生这种情况。正常情况下,+符号可以传递到参数。你能发布你的rails版本吗。还可以尝试用“+”或其CGI等价物“%2B”转义“+”符号,看看它是否有区别。

不确定为什么会发生这种情况。正常情况下,+符号可以传递到参数。你能发布你的rails版本吗。还可以尝试将“+”符号转义为“+”或其CGI等价物“%2B”,以查看它是否有区别。

如果将“+”符号替换为“%2B”,这应该可以解决问题

但是,还要注意,您可能还需要检查符号、百分号和其他字符。接收post数据的服务器可能需要URL编码的数据

简而言之,如果将%符号替换为%25,则替换为%26,替换?用%3F替换#为%23,用%2B替换+符号;您将涵盖您可能遇到的大多数问题

在这些链接中可以找到更深入的替换列表


如果将“+”符号替换为“%2B”,这应该可以解决问题

但是,还要注意,您可能还需要检查符号、百分号和其他字符。接收post数据的服务器可能需要URL编码的数据

简而言之,如果将%符号替换为%25,则替换为%26,替换?用%3F替换#为%23,用%2B替换+符号;您将涵盖您可能遇到的大多数问题

在这些链接中可以找到更深入的替换列表


有一个Ruby调用来为您处理所有这些,因此您无需自己找出字符

需要“uri”

url=是一个测试
escape(url,Regexp.new(“[^{URI::PATTERN::UNRESERVED}]”)

有一个Ruby调用来为您处理所有这些,因此您不需要自己计算字符

需要“uri”

url=是一个测试
escape(url,Regexp.new(“[^{URI::PATTERN::UNRESERVED}]”)

请查看标准库中的CGI.escape方法,该方法将为您执行此操作:

irb(main):001:0> require 'cgi' => true irb(main):002:0> CGI.escape 'foo+bar&baz?qux quux/corge' => "foo%2Bbar%26baz%3Fqux+quux%2Fcorge" irb(主):001:0>要求“cgi” =>正确 irb(主):002:0>CGI.escape“foo+bar&baz?qux-qux/corge” =>“foo%2Bbar%26baz%3Fqux+qux%2Fcorge”
如果您需要转换回,还有一个CGI.unescape方法。

请查看标准库中的CGI.escape方法,它将为您执行此操作:

irb(main):001:0> require 'cgi' => true irb(main):002:0> CGI.escape 'foo+bar&baz?qux quux/corge' => "foo%2Bbar%26baz%3Fqux+quux%2Fcorge" irb(主):001:0>要求“cgi” =>正确 irb(主):002:0>CGI.escape“foo+bar&baz?qux-qux/corge” =>“foo%2Bbar%26baz%3Fqux+qux%2Fcorge” 如果您需要转换回,还有一个CGI.unescape方法