2011-02-11 71 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