951 B
951 B
DrHider — Cyrillic filenames in ZIP fix (2026-07-07)
Проблема
Кириллические имена файлов в выходном ZIP отображаются кракозябрами (CP437 вместо UTF-8). Содержимое файлов — OK.
Причина
zipfile.ZipFile в режиме записи кодирует имена в CP437.
Python 3.12 metadata_encoding='utf-8' работает только на чтение,
при записи → ValueError.
Решение
Использовать ZipInfo с флагом UTF-8 (бит 11 = 0x800):
# Было:
zf.writestr(fname, content)
# Стало:
info = zipfile.ZipInfo(fname)
info.flag_bits |= 0x800
zf.writestr(info, content)
Затронутые файлы
- ВМ:
/home/naeel/contracts/drhider/drhider.py→_build_zip contracts-flask/deploy/drhider/drhider.pycontracts-flask/site/services/drhider.py