我在 Linux 服务器上有名称为 out-of-ASCII 的文件要压缩。不幸的是,UTF8 编码的文件在 Windows 上提取时文件名总是损坏。
有没有办法压缩名称以不同于本地系统字符集的特定字符集编码的文件?或者是否有可以在 Windows 上提取具有正确名称的 UTF8 编码文件的工具?
(如果解决方案是脚本,则首选 PHP 或 Python。)
使用 7z 或 7zip。
在 Linux 上压缩文件并在 Windows 上通过 7-zip 解压缩。
对于 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)
对于蟒蛇 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)