Кракозябры в Windows Terminal после chcp 65001: как исправить
Почему появляются кракозябры в Windows Terminal при OpenAI Codex в cmd после chcp 65001? Причина в несовместимости кодировок UTF-8 и legacy-консоли. Навсегда исправьте системным UTF-8, профилем PowerShell и шрифтом Cascadia Code. Временный фикс — изменение размера окна.
Почему в Windows Terminal при использовании OpenAI Codex в cmd отображаются нечитаемые символы (gibberish), особенно после выполнения команды chcp 65001? Какова причина проблемы и как её исправить навсегда? (Изменение размера окна временно устраняет проблему за счёт перерисовки).
Кракозябры в Windows Terminal после команды chcp 65001 в cmd при работе с OpenAI Codex возникают из-за того, что консоль неправильно интерпретирует UTF-8 байты как устаревшую OEM-кодировку, особенно с кириллицей из PowerShell 5.1. Это классическая проблема несовместимости: cmd выводит UTF-8, но legacy-консоль-хост (conhost.exe) ожидает CP1251 или 866, что приводит к gibberish вместо русских букв. Навсегда исправить можно системной активацией UTF-8 в настройках локали, профилем PowerShell и выбором подходящего шрифта — без этого даже перерисовка окна (изменение размера) даёт лишь временный эффект.
Содержание
- Почему появляются кракозябры в Windows Terminal после chcp 65001
- Причина проблемы: несовместимость кодировок в cmd и OpenAI Codex
- Временные фиксы кракозябр в windows terminal
- Как исправить кракозябры навсегда: системная настройка UTF-8
- Настройка windows terminal cmd и powershell utf8 для OpenAI Codex
- Выбор шрифта в windows terminal для кириллицы без кракозябр
- Дополнительные советы: chcp 65001 в bat и реестре
- Источники
- Заключение
Почему появляются кракозябры в Windows Terminal после chcp 65001
Представьте: запускаете OpenAI Codex в cmd через Windows Terminal, вводите chcp 65001 для поддержки UTF-8, и вдруг вместо нормальной кириллицы — сплошные кракозябры. Это не баг Codex, а старая болезнь Windows-консолей. После chcp 65001 консоль переключается на UTF-8, но буфер вывода остаётся в legacy-режиме: conhost.exe (или wt.exe в новых версиях) пытается отобразить байты UTF-8 как CP437 или OEM-866. Результат? Русские буквы превращаются в иероглифы или квадратики.
Почему именно с OpenAI Codex? Агент Codex часто генерирует вывод с UTF-8, особенно если вы работаете с русским текстом в промптах. В PowerShell 5.1 по умолчанию стоит ANSI (CP1251), так что когда cmd получает смешанный ввод — хаос. А изменение размера окна? Оно просто заставляет Terminal перерисовать буфер, маскируя проблему на пару минут. Но стоит вывести новый текст — и кракозябры вернутся.
Это бьёт по всем: от разработчиков с Codex до простых юзеров bat-файлов. В Windows 11 кракозябры встречаются чаще из-за усиленной поддержки UTF-8 в Terminal, но без донастроек — провал.
Причина проблемы: несовместимость кодировок в cmd и OpenAI Codex
Давайте разберёмся по полочкам. Команда chcp 65001 устанавливает codepage 65001 (UTF-8) для текущей сессии cmd. Но вот засада: Windows Terminal использует новый рендерер (DirectWrite), а cmd.exe — старый conhost с растровыми шрифтами. UTF-8 байты (много-байтовые) интерпретируются как однобайтовые символы OEM-кодировки.
В OpenAI Codex это усугубляется: агент работает через Python или Node, которые по умолчанию UTF-8, но PowerShell 5.1 (встроенный в Win) — ANSI. Когда Codex шлёт кириллицу, она кодируется в UTF-8, cmd её принимает, но шрифт (типа Consolas raster) не тянет сложные глифы. Итог: windows кракозябры вместо русских букв.
Как пишут на Stack Overflow, проблема в том, что даже после chcp консоль-хост не полностью переходит на Unicode — нужны системные изменения. В OpenAI Community подтверждают: для Codex Agent в Windows это типично из-за PS 5.1.
Коротко: mismatch между input/output encoding. Без фикса — вечный gibberish.
Временные фиксы кракозябр в windows terminal
Изменение размера окна — ваш хак, но почему оно работает? Terminal перерисовывает весь буфер, заставляя рендерер заново декодировать текст. Но это как пластырь: через 10 секунд новый вывод — и снова кракозябры.
Другие быстрые трюки:
cls— очищает экран, но не решает корень.- Переключитесь в PowerShell:
pwsh(если установлен PS7) вместо cmd. PS7 лучше с UTF-8. - Вручную:
chcp 1251— вернёт CP1251, но сломает UTF-8 в Codex.
Эти фиксы для “пожара”, но не для продакшена. Хотите навсегда? Идём дальше.
Как исправить кракозябры навсегда: системная настройка UTF-8
Вот золотой стандарт, рекомендованный Microsoft и сообществом. Активируйте системный UTF-8 — это изменит поведение всех консолей.
- Откройте Панель управления → Часы и регион → Регион → Административные.
- Поставьте галку “Использовать кодовую страницу Unicode (UTF-8) 65001 для всех приложений”.
- Перезагрузитесь.
После этого chcp 65001 станет нормой по умолчанию, и кракозябры в cmd уйдут. Как отмечает microsin.net, это решает проблему для 90% случаев без реестра.
Проверьте: запустите Codex, chcp 65001 — кириллица должна отображаться чисто. Если нет — шаг к шрифтам.
Предупреждение: Старые .bat или утилиты (типа 8-bit софта) могут сломаться. Тестируйте!
Настройка windows terminal cmd и powershell utf8 для OpenAI Codex
Windows Terminal — ваш друг, но профили нужно донастроить.
Для cmd
В settings.json (Ctrl+,):
{
"profiles": {
"defaults": {
"font": { "face": "Cascadia Code" }
},
"list": [
{
"guid": "{...cmd...}",
"commandline": "cmd.exe /K chcp 65001 >nul",
"startingDirectory": "%USERPROFILE%"
}
]
}
}
Для PowerShell (критично для Codex)
В профиле PS ($PROFILE):
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
[Console]::OutputEncoding = [Console]::InputEncoding = New-Object System.Text.UTF8Encoding $false
$PSDefaultParameterValues['*:Encoding'] = 'utf8'
$env:PYTHONUTF8 = 1
Сохраните, перезапустите. Для PS7 (pwsh) — идеал, скачайте с GitHub.
В OpenAI Community такой профиль фиксит powershell utf8 для Codex навсегда.
Теперь OpenAI Codex в cmd/Windows Terminal покажет русские буквы без gibberish.
Выбор шрифта в windows terminal для кириллицы без кракозябр
Шрифт — 50% успеха. Растровые (Consolas, Courier) не тянут UTF-8 глифы.
Рекомендации:
- Cascadia Code (официальный, с кириллицей).
- JetBrains Mono или Fira Code.
- Установка: Скачайте Nerd Fonts, добавьте в Terminal settings.
В JSON:
"font": {
"face": "Cascadia Code NF"
}
После Stack Overflow: TrueType-шрифты обязательны. Тестируйте: выведите echo Привет, мир! — должно быть идеально.
Дополнительные советы: chcp 65001 в bat и реестре
Для .bat: не ставьте chcp 65001 в начало — крах в старых Win. Вместо:
@echo off
chcp 65001 >nul
REM ваш код
Автозапуск в cmd: Реестр HKCU\Software\Microsoft\Command Processor\AutoRun = chcp 65001 >nul.
Для bat-скриптов Codex: cmd /U /K yourscript.bat.
В Stack Overflow советуют /U флаг. Плюс, используйте pwsh по умолчанию в Terminal — забудьте о cmd кракозябрах.
Если ничего не помогает: обновите Terminal до последней (1.20+ на 2026).
Источники
- Using UTF-8 encoding (chcp 65001) in Command Prompt / Windows Powershell (Window) — Подробное объяснение проблемы с UTF-8 в консолях Windows: https://stackoverflow.com/questions/57131654/using-utf-8-encoding-chcp-65001-in-command-prompt-windows-powershell-window
- Incorrect Cyrillic rendering in Codex Agent on Windows due to PowerShell 5.1 default ANSI encoding — Фикс для OpenAI Codex с PowerShell UTF-8: https://community.openai.com/t/incorrect-cyrillic-rendering-in-codex-agent-on-windows-due-to-powershell-5-1-default-ansi-encoding/1356123
- Кракозябры в консоли Windows — Анализ причин и системного UTF-8 для консолей: https://microsin.net/adminstuff/windows/bad-encoding-symbols-in-windows-console.html
- chcp 65001 and a bat file — Решения для chcp в bat-файлах без краха: https://stackoverflow.com/questions/32182619/chcp-65001-and-a-bat-file
Заключение
Кракозябры в Windows Terminal с OpenAI Codex после chcp 65001 — это фиксится комбо: системный UTF-8 в intl.cpl, профиль PowerShell с UTF8Encoding, Cascadia Code шрифт и /K chcp в профилях cmd. Забудьте временные хаки вроде изменения окна — после этих шагов кириллица отобразится идеально навсегда. Тестируйте на своей машине, и если bat ломается — откатитесь. Теперь Codex на русском полетит без проблем!
Кракозябры в Windows Terminal после chcp 65001 возникают из-за того, что консоль-хост интерпретирует UTF-8 байты как OEM-кодировку (437/850), вызывая mojibake. Для постоянного исправления включите системный UTF-8 в intl.cpl → Административные → «Использовать Unicode UTF-8 для программ». В PowerShell добавьте в $PROFILE: $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding. Для cmd настройте AutoRun в реестре: chcp 65001 >NUL. Выберите TrueType-шрифт вроде Cascadia Code в настройках Windows Terminal — это устранит кракозябры вместо русских букв навсегда.
В OpenAI Codex Agent на Windows кракозябры в cmd Windows Terminal появляются из-за PowerShell 5.1 с ANSI (CP1251), где кириллица искажается в UTF-8. Добавьте в профиль PowerShell: chcp 65001 > $null; $utf8NoBom = [System.Text.UTF8Encoding]::new($false); [Console]::InputEncoding = $utf8NoBom и т.д., плюс $PSDefaultParameterValues['*:Encoding'] = 'utf8'; $env:PYTHONUTF8 = '1'. Это исправляет powershell utf8 для Codex, устраняя gibberish вместо русских букв. Изменение размера окна лишь перерисовывает буфер, но не решает проблему навсегда — используйте pwsh (PowerShell 7) по умолчанию.
Кракозябры в Windows Terminal после chcp 65001 в cmd возникают от несовпадения кодовой страницы консоли (UTF-8) с выводом программ (CP1251). Навсегда исправьте, включив «Use Unicode UTF-8 code page 65001» в Панели управления → Регион → Дополнительно, и выберите шрифт Lucida Console (TT) вместо растрового. Альтернатива — оставьте chcp 1251 для совместимости с утилитами, добавив команду в профиль Windows Terminal. Это устранит windows кракозябры в консоли без временных перерисовок окна.
В старых Windows chcp 65001 в .bat приводит к краху, вызывая кракозябры вместо русских букв. Исправление: cmd /U /C dir > file.txt для Unicode-вывод или chcp 65001 && cmd /C ... && chcp 866. Создайте init.cmd с CHCP 65001 >nul для автозапуска в cmd. В Windows Terminal настройте профиль cmd.exe с этими параметрами — это решает cmd кракозябры навсегда без реестра.
