![7za.exe 9.20 无法创建带有非英文字母文件名的档案(utf-8)](https://linux22.com/image/1350011/7za.exe%209.20%20%E6%97%A0%E6%B3%95%E5%88%9B%E5%BB%BA%E5%B8%A6%E6%9C%89%E9%9D%9E%E8%8B%B1%E6%96%87%E5%AD%97%E6%AF%8D%E6%96%87%E4%BB%B6%E5%90%8D%E7%9A%84%E6%A1%A3%E6%A1%88%EF%BC%88utf-8%EF%BC%89.png)
我正在努力让 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.txt 创建 privet.7z,但我无法从 Кириллица.txt 创建 Кириллица.7z(而是生成了一个名为 Кириллица.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
但结果是一样的。
答案1
处理 UTF-8(统一码, 真的是不是简单,我一点也不惊讶 UTF-8(甚至非 ASCII)文件名的处理竟然还没有完成。所创建文件的混乱名称暗示文件名处理存在严重问题(压缩/解压程序可能受到恶意内容的威胁)。我会将其作为有毒材料处理,寻找更强大的压缩解决方案。