# v0.0.67 — Фикс кириллических имён из ZIP на фронтенде (2026-08-24) _code-fixes. Имя `TKM_6й_Семестр_ЭКЗАМЕН.docx` из архива отображалось как `TKM_6╨╣_╨б╨╡╨╝╨╡╤Б╤В╤А_...` (мусор)._ ## Причина Архиватор записал имя **в UTF-8, но без UTF-8-флага** (bit 11). Фронт (`decodeZipName`) видел «флага нет», шёл в legacy-ветку и декодировал **UTF-8-байты как CP866** → `D0 99` («й») → `╨╣` (псевдографика CP866). ## Фикс (index.html, `decodeZipName`) - Первым делом — **строгая проверка UTF-8** (`TextDecoder('utf-8', {fatal:true})`): если байты — валидный UTF-8 с кириллицей или печатаемым текстом → берём как есть. - Только если строгий UTF-8 не проходит (реальные CP437/CP866 из 1С) — legacy-путь (CP437 → CP866) не меняется. - CP866-кириллица (0x80–0xAF) — это продолжения UTF-8 без ведущих байтов, поэтому строгий UTF-8 для них честно падает и legacy-путь работает как раньше. ## Согласованность с бэком Бэк (`extractor.py`, `_decode_name`) это уже умел (v0.0.54, «В2 — фикс кракозябр имён zip»). Теперь фронт и бэк обрабатывают имена ZIP одинаково. ## Проверка (node) - `TKM_6й_Семестр_ЭКЗАМЕН.docx` (UTF-8 без флага) — декодируется верно ✅. - ASCII — ✅. Legacy CP437/CP866-путь не тронут. - `node --check` — OK. ## Версия - 0.0.66 → 0.0.67.