2

somefile使用してエンコードしたいものがありますbase64

File.open('data/somefile.edf').read.encoding
=> #<Encoding:UTF-8>

base64_string = Base64.encode64(open("data/somefile.edf").to_a.join)

そして、そのファイルをデコードしたい

file = open('new_edf.edf', 'w') do |file| 
  file << Base64.decode64(base64_string)
end

しかし、私はエラーが発生します:

Encoding::UndefinedConversionError: "\xE1" from ASCII-8BIT to UTF-8
from (pry):22:in `write'
4

1 に答える 1

1

問題は、デフォルトでファイルがテキストモードで書き込み用に開かれていることだと思います。これを修正するには、バイナリ モードを使用してファイルを開きます。

File.open('new_edf.edf', 'wb') { ... }

この他の質問も確認できます: Ruby 1.9 Base64 encoding write to file error

于 2016-02-22T17:55:36.340 に答える