7za.exe 9.20 не может создать архив с не английскими буквами имя файла (utf-8)

998
giuspen

Я изо всех сил пытаюсь, чтобы 7za.exe создал архив, включающий нелатинские символы. Кодировка utf-8, символы кириллические. У меня есть папка с 4 файлами:

7za.exe privet.txt Кириллица.txt test.py 

где содержимое test.py следующее:

#!/usr/bin/env python # -*- coding: utf-8 -*-  SOURCE_FILE = "Кириллица.txt" DEST_ARCHIVE = "Кириллица.7z"  import subprocess  subprocess.call('7za a -bd -y privet.7z privet.txt', shell=True)  cmd_str = '7za a -bd -y %s %s' % (DEST_ARCHIVE, SOURCE_FILE) subprocess.call(cmd_str, shell=True) 

Хотя я могу создать privet.7z из privet.txt, я не могу создать Кириллица.7z из Кириллица.txt (вместо этого создается пустой архив с именем ÐšÐ Ñ € иР»Ð» Ð¸Ñ † Ð ° .7z).

Вывод из 7za.exe:

C:\BEPPE\STAMPARE\TEST_7za_cyrillic>python test.py 7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 Scanning Creating archive privet.7z Everything is Ok 7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 Scanning ÐsиÑ_иллиÑ┼а.txt: WARNING: Impossibile trovare il file specificato. Creating archive ÐsиÑ_иллиÑ┼а.7z WARNINGS for files: ÐsиÑ_иллиÑ┼а.txt : Impossibile trovare il file specificato. ---------------- WARNING: Cannot find 1 file 

Кто-нибудь может мне помочь с этим? Я также пытался из пакетного скрипта test.bat со следующим содержанием:

7za.exe a -bd -y privet.7z privet.txt 7za.exe a -bd -y Кириллица.7z Кириллица.txt 

но результат был тот же.

0

2 ответа на вопрос

0
vonbrand

Обработка UTF-8 (на самом деле Unicode ) не легка, меня не удивило бы, что обработка имен файлов UTF-8 (или даже не ASCII) просто не была сделана. Неправильное имя созданного файла намекает на серьезные проблемы с обработкой имен файлов (программа сжатия / распаковки зависит от возможного вредоносного содержимого). Я бы отнесся к этому как к токсичным материалам, ища более надежное решение для сжатия.

Я также хотел бы избегать использования этого метода, но в настоящий момент мне действительно нужно найти способ, потому что у меня есть несколько документов, сжатых и защищенных паролем, с помощью этого инструмента, который в Linux хорошо работает, но в Windows это ужасное ограничение giuspen 11 лет назад 0
0
Karan

This works for me:

  1. Download Notepad++ (even the <900KB minimalist package will do)

  2. Go to the Settings / Preferences / New Document tab and set the default Encoding to UTF-8 without BOM:

    1

  3. Open a new document and type the following command in it:

    cmd /u /c "chcp 65001 >nul && 7za.exe a -bd -y Кириллица.7z Кириллица.txt" 
  4. Ensure that Notepad++'s status bar says ANSI as UTF-8 and save the document as a .BAT file:

    2

  5. Open a Command Prompt and run the batch file

Also see here if you want the Command Prompt window to display Unicode characters.

На моем Windows XP SP3 с итальянским языком это не работает. Я действительно много раз пробовал с любой версией 920 и 922, но ничего :( Много танков в любом случае для вашей помощи. giuspen 11 лет назад 0
Есть ошибки? Прекрасно работает в Win7 x64 (англ.). Я посмотрю, смогу ли я найти что-то, что работает и в XP. Karan 11 лет назад 0
Ошибки те же, что и в оригинальном сообщении, пустой архив, созданный из-за бессмысленных букв и «не может найти один файл». Я попробую на Win7 x64 (итальянский), чтобы увидеть, работает ли он там. giuspen 11 лет назад 0