文件名中的rubyzip和unicode字符

时间:2012-02-15 19:47:42

标签: ruby zip rubyzip

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以使用以下代码段将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)

答案 2 :(得分:0)

您可以直接运行zip。

`cd yourfolder; zip archivename file1 file2`

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