Ce qui pourrait expliquer invalide “stockées bloquer les longueurs d'erreur”?

Je suis en cours d'exécution Rails (3.2.3) application avec Ruby 1.9.3p194 sur la base de Ubuntu lucid32 image dans un Vagabond virtual box. La boîte virtuelle est en cours d'exécution sur Leopard, pour ce que ça vaut. Je suis en train d'utiliser rubyzip dans l'application pour décompresser une archive zip - 2009_da_lmp.zip. En utilisant le code directement à partir des exemples dans le rubyzip référentiel, je peux confirmer que je peux lister les fichier de l'archive de contenu:

#f is the absolute path to 2009_da_lmp.zip (string)
Zip::ZipFile.open(f) { |zf| zf.entries[0] }  
 => 20090101_da_lmp.csv #that is indeed a file in the archive.

À l'aide du code plus des exemples dans le référentiel, j'essaie d'obtenir sur un fichier dans l'archive:

Zip::ZipInputStream.open(f) { |zis|
  entry = zis.get_next_entry
  print "first line of '#{entry.name}' (#{entry.size} bytes: ) "
  puts "'#{zis.gets.chomp}'" }

=> first line of '20090101_da_lmp.csv' (826610 bytes: ) Zlib::DataError: 
   invalid stored block lengths #and a long stack trace I can provide 
                                #if that might help

Mac OS utilitaire de décompression dézippe l'archive de l'amende. Je me demandais si c'était une sorte de codage chose (mes paramètres régionaux est fixé à fr.UTF-8, car pour faire de l'utilisation de PostgreSQL en dev moins douloureux), mais je ne sais pas comment savoir si c'est le cas. Je ne trouve aucune information sur ce qui peut provoquer cette erreur.

OriginalL'auteur Steve Rowley | 2012-05-14