1

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

4

3 回答 3

1

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

于 2012-02-15T20:15:48.187 回答
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)
于 2014-07-02T15:36:56.300 回答
0

您可以直接运行 zip 。

`cd yourfolder; zip archivename file1 file2`

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

于 2018-04-05T13:05:12.770 回答