В моем приложении мне нужно кодировать строку через base64, экранировать возможные специальные символы и помещать ее в URL.
Я делаю следующее:
string = "random_email@server.com"
enc = OpenSSL::Cipher::Cipher.new('DES-EDE3-CBC')
enc.encrypt('dummy_salt')
encoded = URI.escape(Base64.encode64(enc.update(string) << enc.final))
Проблема, что каким-то образом URI.escape
не экранирует символ '/'.Это совершенно неприемлемо, если закодированная строка предназначена для использования в качестве параметра URL.
Почему URI.escape
игнорирует, чтобы убежать '/'?Должен ли я использовать любой другой .escape
, кроме того, который приходит из URI?Или я должен даже использовать другой метод кодирования (не думаю)?
Любые предложения относительно кода тоже приветствуются.