2009-06-12 8 views

Antwort

1

Versuchen Sie, das + durch% 2B zu ersetzen.

1

Nicht sicher, warum das passiert. Normalerweise kommen + Zeichen zu den Params. Kannst du deine Rails Versionen posten? Versuchen Sie auch, das "+" - Zeichen mit "+" oder seinem CGI-Äquivalent "% 2B" zu umgehen, um zu sehen, ob es einen Unterschied macht.

2

Wenn Sie Ihre '+' Zeichen durch '% 2B' ersetzen, sollte das Problem gelöst werden.

Beachten Sie jedoch auch, dass Sie wahrscheinlich auch Ihre kaufmännischen Und-Zeichen, Prozentzeichen und andere Zeichen überprüfen müssen. Der Server, der Ihre Postdaten empfängt, erwartet wahrscheinlich URLE-codierte Daten. Wenn Sie% signs durch% 25 ersetzen, dann ersetzen Sie & durch% 26, ersetzen? Ersetzen Sie mit% 3F # durch% 23 und ersetzen Sie + Zeichen durch% 2B; Sie werden die meisten Probleme behandeln, denen Sie begegnen können.

Eine ausführlichere Liste der Ersetzungen finden Sie unter diesen Links.

HTML Url Encoding (w3schools)

Percent-Encoding (wikipedia)

0

gibt es ein Ruby all dies für Sie behandeln ruft so müssen Sie die Zeichen nicht herausfinden, selbst

require 'uri'

url = http://www.google.com?a=this ist ein Test URI.escape (URL, Regexp.new ("[^ # {URI :: Muster :: UNRESERVED}]"))

2

Werfen Sie einen Blick auf die cgi.escape Methode in der Standardbibliothek, die dies für Sie tun:

 
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" 

Es gibt auch eine CGI.unescape Methode sollten Sie zurück zu konvertieren.

Verwandte Themen