ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
8 апреля
1580442 Топик полностью
Гyдвинволшебник (Сегодня, 17:17, просмотров: 34) ответил il-2 на MounRiver IDE - поддержка текста в кодировке CP1251. Поимел сегодня интересный и успешный опыт русификации.
Это в редакторе? Я про библиотечные функции со строками. Что дипсик насоветовл, попробовалю. Даже версию компилятора менял. На последний совет забил ;) 
mout rive studio как работать со строками в кодировке cp1251?
Read 1 web page
В MounRiver Studio для работы со строками в кодировке CP1251 (Windows-1251) нужно настроить параметры компилятора, так как по умолчанию он ожидает исходники в UTF-8
.
Вот два основных способа решения задачи:
🔧 Способ 1: Использование флагов компилятора (Рекомендуемый)
Этот метод более чистый и позволяет оставить исходный файл в UTF-8, просто указав компилятору, какую кодировку использовать на выходе.
    Проверьте версию MounRiver Studio:
    Этот способ гарантированно работает в версии v1.92 и новее. Если у вас более старая версия, лучше обновитесь с официального сайта
.
Настройте параметры компилятора:
Вам нужно добавить специальные флаги в настройках сборки проекта. Это можно сделать в свойствах проекта (Properties -> C/C++ Build -> Settings -> Tool Settings) в поле для дополнительных флагов компилятора (Miscellaneous или напрямую в командной строке).
Пропишите следующие флаги:
bash
-finput-charset=UTF-8 -fexec-charset=CP1251
-finput-charset=UTF-8 говорит компилятору, что ваш исходный .c файл сохранен в UTF-8 (стандарт MounRiver).
-fexec-charset=CP1251 говорит компилятору сгенерировать строки в исполняемом файле в кодировке Windows-1251
        .
💡 Способ 2: Ручное кодирование (Без переключения кодировок)
Если по какой-то причине не удается настроить компилятор (например, старая версия или проблемы с iconv), можно хранить строки прямо в коде, используя их шестнадцатеричные коды
.
    Найдите коды символов:
    Таблица CP1251: русская буква 'А' — 0xC0, 'Б' — 0xC1, 'Я' — 0xDF, и так далее.
    Запишите строку в коде:
    Используйте escape-последовательности \x. Это гарантирует, что нужный байт попадет в память, независимо от настроек компилятора.
    Пример: строка "Привет" может выглядеть так:
    c
// Это эквивалентно строке "Привет" в CP1251
char *str = "\xCF\xF0\xE8\xE2\xE5\xF2"; 
    Недостаток этого метода в том, что код становится нечитаемым для человека.
❗ Важное примечание
В некоторых старых версиях MounRiver Community Edition может отсутствовать поддержка libiconv, что приводит к ошибке:
    *cc1.exe: error: no iconv implementation, cannot convert from UTF-8 to cp1251*
Поэтому крайне рекомендуется обновить MounRiver Studio до актуальной версии v1.92 или новее, так как эти версии включают поддержку конвертации
.
Надеюсь, это поможет! Если у вас возникнут другие вопросы, смело задавайте.