【问题标题】:rubyzip and unicode characters in filenames文件名中的 ruby​​zip 和 unicode 字符
【发布时间】:2012-02-15 19:47:41
【问题描述】:

我正在使用 rubyzip gem 和 Zip::ZipOutputStream 类创建 zip 存档,但遇到了 unicode 字母(西里尔文)的问题 - 在存档中它们显示为问号,如????? ???? ??.doc。 rubyzip 支持 unicode 吗?

【问题讨论】:

    标签: ruby zip rubyzip


    【解决方案1】:

    我查看了 ruby​​zip 方法,似乎 ruby​​zip 不能改变语言。它可能使用您计算机的默认代码页。您可以使用 chilkat zip 代替 this 示例,除非您有 chilkat 无法解决的特定要求。

    【讨论】:

      【解决方案2】:

      您可以使用以下 sn-p 将 UTF-8 转换为 CP437,它涵盖了一些 unicode 字符(仅几个)。 Windows 7 及更早版本假定文件名以 CP437 编码。

      # first normalize the string
      normalized_filename = input.mb_chars.normalize.to_s
      # then encode in cp437
      filename_for_zip = normalized_filename.encode("cp437")
      # add file to zip
      zipfile.add(filename_for_zip, pdf_file)
      

      【讨论】:

        【解决方案3】:

        你可以直接运行 zip。

        `cd yourfolder; zip archivename file1 file2`
        

        注意具体的报价。为我在 Ubuntu 上为西里尔文文件名工作,而 ruby​​zip 正在生成具有不可读文件名的存档。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-04-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-29
          • 2020-10-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多