2013-10-23 63 views
2

我有Linux服务器上的名称超出ASCII的文件可以压缩。不幸的是,在Windows上解压缩时,UTF8编码的文件总是会损坏文件名。使用不同的文件名编码压缩或解压缩文件?

有没有办法压缩名称编码在与本地系统字符集不同的特定字符集中的文件?还是有一种工具可以在Windows上以正确的名称提取UTF8编码的文件?

(如果溶液是脚本,PHP或Python是优选的。)

+0

好问题,但属于超级用户或这样。这是一个编程站点。 –

回答

0

使用7Z或7zip的。

在Linux上压缩文件并在Windows上解压缩,同时使用7-zip。

0

对于python2(文件名是俄语)请使用CP866

with zipfile.ZipFile(file_handle, mode='w') as zip_file: 
    for file_ in self._files.all(): 
     path = file_.file.path 

     filename = u'Название файла.txt' 
     try: 
      filename = filename_utf.encode('cp866') 
     except: 
      ext = str(path.split('.')[-1]) 
      filename = '%s.%s' % (uuid4().hex, ext) 

     zip_file.write(path, filename) 

为Python 3

file_handle = BytesIO() 
with zipfile.ZipFile(file_handle, mode='w') as zip_file: 
    for file_obj in files: 
     zip_file.write(filename=file_obj.full_path, arcname=file_obj.file_name) 
+0

请尝试解释你做了什么来帮助他人更好地理解你的答案。 – Minzkraut

+0

你说得对,我现在来描述一下这个话题 – dibrovsd