如何在解码文件时避免获取UndefinedConversionError?

时间:2013-10-15 16:49:08

标签: ruby encoding base64 encode

我想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'

1 个答案:

答案 0 :(得分:0)

我认为问题在于默认情况下会打开文件以便以文本模式进行写入。要解决此问题,请使用二进制模式打开文件:

char_list = list(my_string)

您还可以查看其他问题:Ruby 1.9 Base64 encoding write to file error