2009-06-12 6 views
0

「+」記号を含む投稿データがあります。サーバーに送信すると、生のポストデータに '+'記号が表示されますが、ポストデータがparamハッシュに変換されると、 '+'記号は空白に変換されます。どのようにそれをしないようにするためのアイデア?Rails: '+'の投稿データが空白に設定されています

答えて

1

+を%2Bに置き換えてください。

1

なぜ起こっているのかわかりません。通常+記号はパラメータに通します。あなたのレールバージョンを投稿できますか?また、 "+"記号、またはそのCGI相当の "%2B"記号をエスケープして、違いがあるかどうか確認してください。

2

'+'記号を '%2B'に置き換えると、問題が解決するはずです。

ただし、アンパサンド、パーセント記号などの文字も確認する必要があります。あなたの投稿データを受け取っているサーバーはおそらくURLエンコードされたデータを期待しています。

簡単に言えば、%記号を%25に置き換えた場合は、&を%26に置き換えます。 %3Fで、#を%23で置き換え、+記号を%2Bで置き換えます。遭遇する可能性のある問題のほとんどをカバーします。

これらのリンクには、より詳細な置換えリストがあります。

HTML Url Encoding (w3schools)

Percent-Encoding (wikipedia)

0

Rubyはありますが、文字を把握する必要がありませんので、あなたのためのすべてのこれを処理するために呼び出す自分

'URI'

URLを要求= http://www.google.com?a=thisはテストです URI.escape(URL、Regexp.new( "[^#{URI ::パターン::未保存}]"))

2

はあなたのためにこれを行います標準ライブラリの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" 

あなたが戻って変換する必要があるのCGI.unescape方法もあります。

関連する問題