文件名中的rubyzip和unicode字符



我正在使用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则使用不可读的文件名生成归档文件。

相关内容

  • 没有找到相关文章

最新更新