繁体   English   中英

文件名中的rubyzip和unicode字符

[英]rubyzip and unicode characters in filenames

我正在用rubyzip gem和Zip::ZipOutputStream类创建zip归档文件,并且遇到了unicode字母(西里尔字母)的问题-在归档文件中,它们以问号形式显示,例如????? ???? ??.doc ????? ???? ??.doc ????? ???? ??.doc rubyzip是否支持unicode?

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

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

您可以直接运行zip。

`cd yourfolder; zip archivename file1 file2`

注意特定的报价。 在Ubuntu上为我提供了西里尔字母的文件名,而rubyzip生成的文件中包含不可读的文件名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM