ТОЧНЫЙ Рубиновый эквивалент функции escape () Javascript - PullRequest
4 голосов
/ 15 августа 2011

Рассмотрим строку: ` ( ?

Javascript escape() кодирует ее так:

escape("` ( ?")
"%60%20%28%20%3F"

Как мне добиться того же эффекта в Ruby?Ничего, что я пробую, не работает:

[Dev]> CGI.escape("` ( ?")
=> "%60+%28+%3F"
[Dev]> URI.encode("` ( ?")
=> "%60%20(%20?"
[Dev]> Addressable::URI.encode("` ( ?")
=> "%60%20(%20?"

Ответы [ 2 ]

5 голосов
/ 15 августа 2011

ERB::Util.url_encode сделает это:

>> require 'erb'
=> true
>> ERB::Util.url_encode("` ( ?")
=> "%60%20%28%20%3F"
4 голосов
/ 15 августа 2011

URI::encode также принимает регулярное выражение для сопоставления с небезопасными символами, которые необходимо экранировать;Вы можете просто передать регулярное выражение, соответствующее любому символу:

URI.encode("` ( ?", /./) # => "%60%20%28%20%3F"

Кстати, из Mozilla Developer Network :

Функции escape и unescape делаютне работает должным образом для не-ASCII символов и устарела.В JavaScript 1.5 и более поздних версиях используйте encodeURI, decodeURI, encodeURIComponent и decodeURIComponent.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...