![](/img/trans.png)
[英]Can Ruby get the filenames in a folder if they have Unicode characters?
[英]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.