Ruby on rails Rails:使用'+';正在设置为空白
我有包含“+”符号的post数据。一旦发送到服务器,原始post数据将显示“+”号,但一旦post数据发送到参数散列中,“+”号已转换为空。有没有办法让它不这样做?尝试用%2B替换+。尝试用%2B替换+。不知道为什么会发生这种情况。正常情况下,+符号可以传递到参数。你能发布你的rails版本吗。还可以尝试用“+”或其CGI等价物“%2B”转义“+”符号,看看它是否有区别。不确定为什么会发生这种情况。正常情况下,+符号可以传递到参数。你能发布你的rails版本吗。还可以尝试将“+”符号转义为“+”或其CGI等价物“%2B”,以查看它是否有区别。如果将“+”符号替换为“%2B”,这应该可以解决问题 但是,还要注意,您可能还需要检查符号、百分号和其他字符。接收post数据的服务器可能需要URL编码的数据 简而言之,如果将%符号替换为%25,则替换为%26,替换?用%3F替换#为%23,用%2B替换+符号;您将涵盖您可能遇到的大多数问题 在这些链接中可以找到更深入的替换列表Ruby on rails Rails:使用'+';正在设置为空白,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有包含“+”符号的post数据。一旦发送到服务器,原始post数据将显示“+”号,但一旦post数据发送到参数散列中,“+”号已转换为空。有没有办法让它不这样做?尝试用%2B替换+。尝试用%2B替换+。不知道为什么会发生这种情况。正常情况下,+符号可以传递到参数。你能发布你的rails版本吗。还可以尝试用“+”或其CGI等价物“%2B”转义“+”符号,看看它是否有区别。不确定为什么会发生这种情况。正常情况下,+符号可以传递到参数。你能发布你的rails版本吗。还可以尝试将“+”符号转义为“+”
如果将“+”符号替换为“%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方法