Я изо всех сил пытаюсь, чтобы 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

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

2 ответа2

0

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

0

Это работает для меня:

  1. Загрузите Notepad++ (подойдет даже минималистичный пакет <900 КБ)

  2. Перейдите на вкладку « Settings / Preferences / New Document » и установите кодировку по умолчанию UTF-8 без спецификации:

    1

  3. Откройте новый документ и введите в нем следующую команду:

    cmd /u /c "chcp 65001 >nul && 7za.exe a -bd -y Кириллица.7z Кириллица.txt"
    
  4. Убедитесь, что в строке состояния Notepad++ указано ANSI как UTF-8, и сохраните документ как.BAT-файл:

    2

  5. Откройте командную строку и запустите командный файл

Также смотрите здесь, если вы хотите, чтобы в окне командной строки отображались символы Unicode.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .