2011-02-11 66 views
0

的RubyZip库是高兴,让我创造重音字符的文件名:重音字符

require 'zip/zip' 

Zip::ZipFile.open("my.zip", Zip::ZipFile::CREATE) { |zipfile| 
    zipfile.get_output_stream("Café.txt") { |f| f.puts "Hello from ZipFile" } 
} 

但它们看起来在生成的ZIP损坏:

$ unzip -v my.zip 
Archive: my.zip 
Length Method Size Cmpr Date Time CRC-32 Name 
-------- ------ ------- ---- ---------- ----- -------- ---- 
     19 Defl:N  21 -11% 2011-02-11 11:14 c49ac197 Caf??.txt 

如果我解压在创建它的同一个Linux系统上的文件,文件名被正确恢复,但是我可以相信这些文件在其他地方工作,或者我应该在名称上安全并且愚蠢地进行操作吗?

回答

3

一般来说,我会一直避免在任何文件名中使用非ASCII字符(包括重音字符) - 特别是那些旨在以编程方式访问的字符,尤其是在压缩文件中。考虑到其他语言在国际上不那么敏感,但是解压缩器在处理非ASCII字符方面非常糟糕,这不仅会引起麻烦。

+0

是。事实证明,这不是ZIP格式的问题,而是内容被各种操作系统和ZIP处理工具解释的方式,所以我们忽略了这些名称。 – jpatokal 2011-03-01 02:07:11