【问题标题】:Using Ruby to create ZIP archives containing UTF-8 encoded "files" without using the file system使用 Ruby 创建包含 UTF-8 编码“文件”的 ZIP 存档,而不使用文件系统
【发布时间】:2012-08-10 19:32:31
【问题描述】:

使用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

【问题讨论】:

    标签: ruby xml utf-8 zip rubyzip


    【解决方案1】:

    这可能只是意味着文件中没有多字节字符将其识别为 utf8。换句话说,一个只有 ascii 字符的 utf8 编码文件应该被识别为 ascii。

    【讨论】:

    • 确实如此。谢谢。
    猜你喜欢
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多