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" }
}
但是它们在最终的拉链中看起来已经损坏了:
$ 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系统上解压缩文件,文件名会正确恢复,但是我可以相信这些文件可以在其他地方工作吗?或者我应该安全地播放这些名称吗?
答案 0 :(得分:3)
通常,我总是避免在任何文件名中使用非ascii字符(包括重音字符) - 特别是那些意味着以编程方式访问的字符,特别是在压缩文件中。考虑到其他不那么具有国际敏感性的语言,它不仅会引起麻烦,而且解压缩器在处理非ascii字符方面也是出了名的。