Я строю API в Rails, который расшифровывает один из параметров POST с помощью RSA. При проверке шифрования и дешифрования внутри Ruby, как показано ниже, строковый литерал, зашифрованный (который, как представляется, кодируется в кодировке UTF8), не появляется в качестве UTF-8 после дешифрования. Почему это ASCII-8BIT? Каков рекомендуемый способ справиться с этим? Должен ли я вызвать force_encoding («UTF-8») в расшифрованной строке и сказать в спецификации API, что все строки должны быть UTF8 перед шифрованием?ruby OpenSSL RSA кодировка символов
@rsa = OpenSSL::PKey::RSA.new(1024)
original = "hej på dig\n"
puts original.encoding.name # => "UTF-8"
ciphertext = @rsa.public_encrypt(original)
decrypted = @rsa.private_decrypt(ciphertext)
puts decrypted.encoding.name # => "ASCII-8BIT"
assert_equal original, decrypted
#expected: hej på dig
#actual: hej p\xC3\xA5 dig
Я использую Ruby 2.1.3 на OSX Yosemite with Rails 4.1.5.