使用zipruby,无需写入磁盘即可轻松创建 ZIP 存档。可以获取字符串并将它们添加为存档条目,最后将整个存档作为字符串获取。然后,我可以将其作为附件发送到需要此类存档的 Web 服务。这正是我所需要的,但有一个例外:事实证明,存档中的文件是 US-ASCII 编码的,而 Web 服务对 UTF-8 编码的文件非常严格。
有没有办法让 zipruby (或一些等效的工具,虽然我还没有找到一个能够不使用临时文件的 Ruby 工具)将这些存档条目编码为 UTF-8?
zipped_data = ''
Zip::Archive.open_buffer zipped_data, Zip::CREATE do |archive|
archive.add_buffer 'file1.xml', xml1.encode('UTF-8')
archive.add_buffer 'file2.xml', xml2.encode('UTF-8')
end
为了测试,我将它写入zipped_data
一个文件,然后解压缩,然后我可以很好地看到编码错误:
$ file -bi file1.xml
application/xml; charset=us-ascii