我正在使用rubyzip
gem和Zip::ZipOutputStream
类创建zip存档,但遇到了unicode字母(cyrillic)问题-在存档中,它们像????? ???? ??.doc
一样显示为问号。rubyzip支持unicode吗?
我研究了rubyzip方法,发现rubyzip似乎不能改变语言。它可能使用了您计算机的默认代码页。您可以像本例中那样使用chilkat zip,除非您有chilkat无法解决的特定需求。
您可以使用下面的代码片段将UTF-8转换为CP437,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则使用不可读的文件名生成归档文件。