Ruby - le codage d'URL

J'ai une chaîne d'URL où il y a des sauts de ligne et un retour chariot. E. g.

http://xyz.com/hello?name=john&msg=hello\nJohn\n\rgoodmorning&note=last\night I went to \roger

Où mon msg chaîne est:

hello
john
goodmorning

et note chaîne est

last\night I went to \roger

Afin de l'envoyer correctement je urlencode ce

 http://xyz.com/hello?name%3Djohn%26msg%3Dhello%5CnJohn%5Cn%5Crgoodmorning%26note%3Dlast%5Cnight%20I%20went%20to%20%5Croger

Mais cette encoder gâcher \n et \r. Alors que je m'attends \n devriez obtenir converti %0A et \r pour %0D

Je suis à l'écriture de code est ruby. Et j'ai essayé de prendre l'aide de Addressable::URI mais aucune aide n'est pas encore. Autre moyen pourrait être de remplacer \n et \r manuellement à l' %0A et %0D respectivement. Mais ce remplacement peut remplacer les caractères valides comme last\night à last%0Aight que je ne veux pas. Quelqu'un peut-il suggérer une meilleure solution? Merci.

OriginalL'auteur JVK | 2013-01-04