我正在用rubyzip gem和Zip::ZipOutputStream类创建zip归档文件,遇到了unicode字母(西里尔字母)的问题-在归档文件中,它们被表示为像????? ???? ??.doc这样的问号。rubyzip支持unicode吗?
rubyzip
Zip::ZipOutputStream
????? ???? ??.doc
ipakzgxi1#
我看了一下rubyzip方法,似乎rubyzip不能改变语言。它可能使用计算机的默认代码页。你可以像this例子中那样使用chilkat zip,除非你有chilkat无法满足的特定需求。
o75abkj42#
您可以使用以下代码片段将UTF-8转换为CP437,其中包含一些unicode字符(仅几个)。Windows 7及更早版本假定文件名以CP 437编码。
# 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)
bejyjqdl3#
你可以直接运行zip。
`cd yourfolder; zip archivename file1 file2`
注意具体的报价。我在Ubuntu上为西里尔文文件名工作,而rubyzip正在生成不可读文件名的存档。
kpbwa7wx4#
这就是我的工作。在创建Zip文件之前设置此选项
Zip.force_entry_names_encoding = 'UTF-8'
我从https://github.com/rubyzip/rubyzip#non-ascii-names上得到了这个
4条答案
按热度按时间ipakzgxi1#
我看了一下rubyzip方法,似乎rubyzip不能改变语言。它可能使用计算机的默认代码页。你可以像this例子中那样使用chilkat zip,除非你有chilkat无法满足的特定需求。
o75abkj42#
您可以使用以下代码片段将UTF-8转换为CP437,其中包含一些unicode字符(仅几个)。Windows 7及更早版本假定文件名以CP 437编码。
bejyjqdl3#
你可以直接运行zip。
注意具体的报价。我在Ubuntu上为西里尔文文件名工作,而rubyzip正在生成不可读文件名的存档。
kpbwa7wx4#
这就是我的工作。在创建Zip文件之前设置此选项
我从https://github.com/rubyzip/rubyzip#non-ascii-names上得到了这个