docs: v0.0.64-0.0.67 (тикеры/оценки, блокировки UI, фикс имён ZIP) + README History
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user