Files
contracts-flask/History/drhider-utf8-zip-2026-07-07.md
T
2026-07-07 15:34:36 +04:00

29 lines
951 B
Markdown

# 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):
```python
# Было:
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.py`
- `contracts-flask/site/services/drhider.py`