【发布时间】:2012-02-15 19:47:41
【问题描述】:
我正在使用 rubyzip gem 和 Zip::ZipOutputStream 类创建 zip 存档,但遇到了 unicode 字母(西里尔文)的问题 - 在存档中它们显示为问号,如????? ???? ??.doc。 rubyzip 支持 unicode 吗?
【问题讨论】:
我正在使用 rubyzip gem 和 Zip::ZipOutputStream 类创建 zip 存档,但遇到了 unicode 字母(西里尔文)的问题 - 在存档中它们显示为问号,如????? ???? ??.doc。 rubyzip 支持 unicode 吗?
【问题讨论】:
我查看了 rubyzip 方法,似乎 rubyzip 不能改变语言。它可能使用您计算机的默认代码页。您可以使用 chilkat zip 代替 this 示例,除非您有 chilkat 无法解决的特定要求。
【讨论】:
您可以使用以下 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)
【讨论】:
你可以直接运行 zip。
`cd yourfolder; zip archivename file1 file2`
注意具体的报价。为我在 Ubuntu 上为西里尔文文件名工作,而 rubyzip 正在生成具有不可读文件名的存档。
【讨论】: