Кракозябры вместо русских букв при запуске старой игры или программы в DOSBox — результат несовпадения кодовых страниц: эмулятор по умолчанию работает с западноевропейской кодировкой cp437, а русскоязычный софт эпохи MS-DOS писался под cp866. Проблема решается сменой кодовой страницы и подключением русификатора клавиатуры, причём способ зависит от того, используете вы классический DOSBox или форк DOSBox-X, где поддержка русского встроена из коробки.
Ниже разберём, почему возникают артефакты отображения, как настроить русский ввод и вывод в разных версиях эмулятора и что делать, если программа всё равно показывает нечитаемые символы.
Почему в DOSBox не отображается русский текст
Операционная система MS-DOS хранила символы в однобайтовых кодовых страницах. Для кириллицы в России стандартом де-факто стала cp866 («альтернативная кодировка»), тогда как DOSBox эмулирует американское окружение с cp437. В результате байты русских букв интерпретируются как псевдографика и латиница — отсюда и «иероглифы» на экране.
Вторая часть проблемы — раскладка клавиатуры. Даже если текст на экране читается, ввести русские буквы без загруженного драйвера клавиатуры невозможно: эмулятор передаёт программе только скан-коды латинской раскладки.
Быстрое решение: DOSBox-X и DOSBox Staging
Если вы ещё не привязаны к конкретной сборке эмулятора, проще всего взять DOSBox-X — в нём поддержка кириллицы реализована нативно. Достаточно открыть конфигурационный файл и задать параметры в секции [dos]:
country = 7
keyboardlayout = ru
После перезапуска эмулятор переключится на русскую локаль, экранный вывод станет корректным, а раскладка будет переключаться привычной комбинацией (по умолчанию правый Alt, либо через параметры конфигурации). В DOSBox Staging русская локаль также задаётся через конфиг — проверьте актуальные имена параметров в документации вашей версии, так как они могут отличаться между релизами.
⚠️ Внимание: классический DOSBox 0.74 официально не обновлялся много лет и не содержит встроенной русской локали. Для него потребуется ручная загрузка codepage-файлов и резидентного русификатора — об этом ниже.
Настройка русского языка в классическом DOSBox 0.74
В оригинальном DOSBox 0.74 есть команда keyb, загружающая национальную раскладку. Для русского языка она вызывается так:
keyb ru 866
Здесь ru — раскладка, 866 — кодовая страница. Однако команда сработает только при наличии файлов keyb.com, keyboard.sys и ega.cpi (или ega2.cpi) из реальной MS-DOS или FreeDOS. Без них эмулятор выдаст ошибку о невозможности загрузить кодовую страницу.
Рабочая последовательность выглядит так:
- 📁 Скопируйте
keyb.com,keyboard.sysиega.cpiиз дистрибутива FreeDOS в смонтированный каталог DOSBox. - ⌨️ Выполните в командной строке эмулятора
keyb ru 866и проверьте переключение раскладки. - 🧪 Запустите русскоязычную программу и убедитесь, что текст отображается кириллицей.
- 💾 Добавьте команду в секцию
[autoexec]конфигурационного файла, чтобы не вводить её вручную при каждом запуске.
☑️ Чек-лист русификации классического DOSBox
Автозагрузка настроек через конфигурационный файл
Чтобы не повторять настройку при каждом запуске, откройте конфиг dosbox.conf (его путь зависит от ОС: в Windows он обычно лежит в каталоге пользователя, в Linux — в ~/.dosbox/) и найдите секцию [autoexec]. Всё, что написано в ней, выполняется при старте эмулятора как bat-файл.
[autoexec]
mount c /home/user/dosgames
c:
keyb ru 866
Такой блок монтирует каталог с программами, переходит на диск C: и загружает русскую раскладку автоматически. Если у вас несколько игр с разными требованиями, удобно держать отдельный конфиг для каждой и запускать эмулятор с ключом -conf имя_файла.conf.
Сравнение способов русификации
| Способ | Сложность | Отображение | Ввод |
|---|---|---|---|
| DOSBox-X (country + keyboardlayout) | Минимальная | Корректное | Работает из коробки |
| Классический DOSBox + keyb ru 866 | Средняя | Корректное при наличии .cpi-файлов | Работает после загрузки keyb |
| Резидентный русификатор (keyrus и аналоги) | Средняя | Зависит от русификатора | Работает, но может конфликтовать с играми |
| Без настройки (cp437) | — | Кракозябры | Только латиница |
Как видно из таблицы, самый надёжный путь для русскоязычного пользователя — DOSBox-X с параметрами country и keyboardlayout, поскольку он не требует поиска системных файлов DOS и не зависит от сторонних резидентных программ.
Если русский текст всё равно отображается неправильно
Иногда даже после смены кодовой страницы программа показывает мусор. Возможная причина — сама программа использует другую кириллическую кодировку: помимо cp866 существовали cp855, ISO 8859-5, КОИ-8 и «основная» кодировка ГОСТ. В таком случае переключение эмулятора на cp866 не поможет, потому что несовпадение зашито в самих данных программы.
Второй сценарий — программа напрямую пишет в видеопамять со своим шрифтом. Тогда кодовая страница вообще ни на что не влияет: символы рисуются собственным знакогенератором, и «кракозябры» означают, что шрифт программы повреждён или рассчитан на другую аппаратную конфигурацию.
⚠️ Внимание: не редактируйте файлы игры шестнадцатеричным редактором «для перекодировки», если не уверены в структуре данных — это частый способ окончательно сломать исполняемый файл. Сначала сделайте резервную копию каталога.
Что делать с программами в КОИ-8 или cp855
Если программа написана под КОИ-8 или cp855, в DOSBox-X можно попробовать сменить кодовую страницу через параметр codepage в конфиге либо поискать патченную версию программы под cp866 — для популярных русских игр эпохи DOS такие версии часто существуют.
Запуск конкретных русских игр и программ
Большинство русскоязычных игр середины 1990-х уже содержат встроенный русификатор экрана и клавиатуры — им достаточно стандартного запуска. Проблемы чаще возникают с локализациями, где перевод выполнен отдельным резидентным модулем: такой модуль нужно запустить до основной программы, причём в той же сессии DOSBox.
Для офисных и учебных программ DOS (например, «Лексикона» или «Слова и Дела») критична именно cp866: без неё документы, созданные на реальных машинах той эпохи, откроются с искажённым текстом. Если вы переносите старые документы, проверяйте кодировку файлов заранее — конвертеры в UTF-8 существуют и работают вне эмулятора.
Частые вопросы
Как переключать раскладку клавиатуры внутри DOSBox?
В DOSBox-X переключение обычно привязано к правому Alt или задаётся в конфигурации. При использовании keyb ru 866 комбинация зависит от версии keyb — чаще всего это оба Shift одновременно или Ctrl+Shift. Проверьте документацию к конкретному файлу keyb.com.
Ошибка «Codepage 866 not found» — что делать?
Эмулятор не нашёл файл с описанием кодовых страниц (ega.cpi или ega2.cpi). Скопируйте его из дистрибутива FreeDOS в смонтированный каталог и повторите команду keyb ru 866.
Можно ли выводить русский текст в консоль DOSBox без keyb?
Отображение и ввод — разные вещи. Для корректного отображения достаточно кодовой страницы cp866, но для ввода русских букв без загруженной раскладки не обойтись: нужен либо keyb, либо встроенная локаль DOSBox-X.
Русская игра показывает нормальный текст, но не принимает русский ввод
Возможная причина — игра использует собственный обработчик клавиатуры, игнорирующий резидентные русификаторы. Проверьте, есть ли в комплекте игры фирменный драйвер клавиатуры, и запускайте именно его, а не keyb.
Чем DOSBox-X лучше для русского языка?
В нём кириллические кодовые страницы и раскладки встроены в сам эмулятор: не нужны внешние файлы из MS-DOS, а настройка сводится к двум строкам конфигурации. Дополнительно он поддерживает перекодировку имён файлов при монтировании каталогов с русскими названиями.