Étant donné la chaîne:
"Hello there world"
Comment puis-je créer une chaîne codée en URL comme ceci:
"Hello%20there%20world"
Je voudrais aussi savoir quoi faire si la chaîne a aussi d’autres symboles, comme:
"hello there: world, how are you"
Quelle serait la manière la plus simple de le faire? J’allais parsingr et ensuite construire du code pour cela.
require 'uri' URI.encode("Hello there world") #=> "Hello%20there%20world" URI.encode("hello there: world, how are you") #=> "hello%20there:%20world,%20how%20are%20you" URI.decode("Hello%20there%20world") #=> "Hello there world"
L’ URI de Ruby est utile pour cela. Vous pouvez créer l’URL complète par programmation et append les parameters de requête à l’aide de cette classe, et cela gérera l’encodage pour vous:
require 'uri' uri = URI.parse('http://foo.com') uri.query = URI.encode_www_form( 's' => "Hello there world" ) uri.to_s # => "http://foo.com?s=Hello+there+world"
Les exemples sont utiles:
URI.encode_www_form([["q", "ruby"], ["lang", "en"]]) #=> "q=ruby&lang=en" URI.encode_www_form("q" => "ruby", "lang" => "en") #=> "q=ruby&lang=en" URI.encode_www_form("q" => ["ruby", "perl"], "lang" => "en") #=> "q=ruby&q=perl&lang=en" URI.encode_www_form([["q", "ruby"], ["q", "perl"], ["lang", "en"]]) #=> "q=ruby&q=perl&lang=en"
Ces liens peuvent également être utiles:
Si quelqu’un est intéressé, la manière la plus récente de procéder est la suivante:
<%= u "Hello World !" %>
Cela va rendre:
Bonjour% 20World% 20% 21
u est court pour url_encode
Vous pouvez trouver les documents ici
Alors que la réponse actuelle dit d’utiliser URI.encode
qui est obsolète et obsolète depuis Ruby 1.9.2. Il est préférable d’utiliser CGI.escape
ou ERB::Util.url_encode
.