From 71e2fef4d9a97880b449c41541d17713e8b788d7 Mon Sep 17 00:00:00 2001 From: Codex Date: Thu, 30 Jul 2026 22:50:23 +0300 Subject: [PATCH] fix: use UTF-8 BOM for .bat so cmd shows Cyrillic correctly UTF-8 without BOM + chcp 65001 showed '????' because cmd reads .bat under the OEM codepage, not chcp. A UTF-8 BOM makes cmd read the file as UTF-8 regardless of the console codepage; verified Cyrillic in echo/set/for displays correctly even when cmd starts at cp866. AGENTS.md updated accordingly. --- AGENTS.md | 15 +++++++++------ run.bat | 2 +- scripts/open-firewall.bat | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 27a64b7..f2fa70f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -69,12 +69,15 @@ run.bat запуск в один клик (спрашивае ## Соглашения и подводные камни -- **Кодировка файлов `.bat`:** **UTF-8 без BOM**, окончания строк **CRLF**, и первой - командой после `@echo off` — `chcp 65001 >nul` (консоль в UTF-8, иначе кириллица - в echo/set/for превратится в мусор). Проверено: `echo`, `set /p`, `for /f` и - перенаправление в файл корректно работают с кириллицей под `chcp 65001`. - Пиши через `[System.IO.File]::WriteAllText(path, content -replace "(?nul` + после `@echo off`. Именно **BOM** заставляет `cmd` читать .bat как UTF-8 независимо + от OEM-кодировки консоли (без BOM + `chcp 65001` в `cmd` даёт `????` — cmd читает + файл по OEM-кодировке, а не по `chcp`). BOM + `chcp 65001` проверено: кириллица в + `echo`/`set /p`/`for /f` отображается корректно, `@echo off` работает. Альтернатива + без BOM — включить системную опцию «Beta: Use Unicode UTF-8 for worldwide language + support» (тогда OEM-кодировка = 65001), но это влияет на всю систему (нужен reboot, + могут ломаться legacy-приложения под cp866/cp1251) — поэтому по умолчанию BOM. + Пиши через `[System.IO.File]::WriteAllText(path, content -replace "(?