Русский язык в исходном коде в Dev C++ [дубликат]
то получается абракадабра! А если перебираю символы циклом, то русские буквы отображаются правильно. Я думаю проблема в различии кодировок dos и windows. Кто знает какие-нибудь примочки для Dev C++ (типа keycyr для pascal) или операторы/функции/процедуры C++ позволяющие сменить кодировку std::cout.
Отслеживать
34k 25 25 золотых знаков 130 130 серебряных знаков 222 222 бронзовых знака
задан 12 янв 2012 в 10:18
4,966 10 10 золотых знаков 33 33 серебряных знака 62 62 бронзовых знака
Обычно можно воспользоваться std::wcout и остальными wide-типами/методами. Однако, насколько помню, в Dev-C++ используется по умолчанию MinGW для компиляции кода, то их там просто нет.
12 янв 2012 в 20:43
Зачем вы везде раскопипастили этот костыль? 🙁
7 июн 2012 в 15:25
Потому что он THE BEST и не «везде» а в двух взаимосвязанных вопросах потому что я хочу помочь таким же как я пользователям Хэшкод если никто не смог помочь мне!
8 июн 2012 в 4:56
@Rules, у большинства уже есть свой рабочий способ справиться с этой проблемой и без использования измененного компилятора. Если у вас не получилось воспользоваться их опытом, это не значит что это они не смогли помочь вам.
8 июн 2012 в 9:41
@Rules, в UPDATE к своему старому ответу привел новый способ ввода-вывода с консолью, основанный на ответе @insolor. Сводится к вызову одной функции в самом начале main(). Дальше просто работаете с printf()/fgets()/. — Посмотрите, может понравится.
8 июн 2012 в 22:11
5 ответов 5
Сортировка: Сброс на вариант по умолчанию
С setlocale() по науке правильно, но если локализация кривовата (как у меня на этой машине), то не работает.
В Windows есть 2 функции, CharToOem(char, char) и OemToChar(char, char) для перевода cp-1251 в cp-866 (консоль) и обратно.
#include #include #include #include main ()
В программе набрано в cp-1251 (она же ANSI).
При вводе с консоли, независимо от setlocale() придется переводить кодировку. Также обратите внимание, что параметры командной строки, набранные в консоли поступают в программу в кодировке cp-1251.
Кодировка в файлах обычно подразумевается в cp-1251 , это надо учитывать при переадресации ( > ) вывода ( stdout , stderr ). Я продемонстрировал в примере, как это можно делать.
UPDATE
@insolor дал замечательный ответ как правильно программировать работу с русскими буквами в консоли Windows, используя стандартные функции
SetConsoleCP(1251) и SetConsoleOutputCP(1251) .
В обсуждении (комментариях) к его ответу можно найти различные детали, в частности установку русского шрифта.
Похоже его ответ прошел незамеченным для некоторых участников форума. Поэтому я решил привести функцию, вызов которой в самом начале упрощает программирование ввода/вывода русских букв в Windows и пример ее использования.
#include static int oldin = 0, oldout = 0; static void exitfunc() < SetConsoleCP(oldin); SetConsoleOutputCP(oldout); >void cons1251 () < if (oldin) return; atexit(exitfunc); oldin = GetConsoleCP(); oldout = GetConsoleOutputCP(); SetConsoleCP(1251); SetConsoleOutputCP(1251);
#include // русский текст в кодировке cp1251 (она же ANSI) // обратите внимание, не нужен main()
Вызов fflush(stdout) при работе с консолью (tty) необязателен, однако для вывода в некоторых эмуляторах терминала (например в Emacs eshell) необходим.
Это пример компиляции (Windows 7, Emacs eshell) окно в cp1251 поэтому вывод русского текста и до и после cons1251() одинаковый (и правильный).
c:/Users/avp/src/cc/hashcode $ gcc -c cons1251.c c:/Users/avp/src/cc/hashcode $ gcc rustest.c cons1251.o -o rustest c:/Users/avp/src/cc/hashcode $ ./rustest This is russian [аБвГдЕ] before cons1251() This is russian [аБвГдЕ] after cons1251() Привет - введи часть от "привет" иве Вы ввели: 'иве' да, часть от 'привет' ждем ввода to exit. c:/Users/avp/src/cc/hashcode $ c:/Users/avp/src/cc/hashcode $
К сожалению для стандартного cmd-окошка Copy/Paste не работает, так что попробуйте сами.
Для окна с PowerShell в Win 7 этот метод к сожалению не работает (в отличие от «геморройного» CharToOem / OemToChar ).
Надеюсь этот текст окажется кому-то полезным.
UPDATE 2 (for @Rules)
Исходный файл tt.cpp
#include extern "C" void cons1251(void); main() < std::cout > str; std::cout
c:/Documents and Settings/avp/src/hashcode $ g++ tt.cpp cons1251.o -o tt c:/Documents and Settings/avp/src/hashcode $ ./tt Привет, введите слово Привет, введите слово йцукен Вы ввели: йцукен c:/Documents and Settings/avp/src/hashcode $
Пример вывода из эмулятора терминала Emacs eshell. Поэтому первый «Привет. » тоже состоит из нормальных букв. В обычной консоли там «кракозябры», а дальше нормальная кириллица.
Обращаю особое внимание. Перед запуском надо изменить шрифт в консоли на Lucida Console. Иначе будут кракозябры (но другие). Для замены шрифта кликаете правой кнопкой на надписи «Командная строка» окна консоли. В открывшемся меню выбираете «Свойства». В появившемся окне выбираете вкладку «Шрифт» и там выбираете «Lucida Console». Потом подтверждаете, что попросит.
Если при подтверждении выбрать пункт «Изменить ярлык для запуска этого окна», то новые окна командной строки будут уже с нужным шрифтом.
Русский интерфейс в Dev-C++

Вот уж не думал, что буду писать статью и делать видео по этой теме. Мне казалось, что такой вопрос никогда ни у кого не может возникнуть. Ан нет. Я ошибся. Такой вопрос возник у одного из читателей. А если он возник у одного, то может возникнуть и у других. Поэтому я и решил написать эту статью. А вопрос, собственно, следующий:
Как установить русский интерфейс в среде разработки Dev-C++
То есть как сделать так, чтобы все надписи в меню и диалоговых окнах были на русском языке.
Сделать это можно двумя способами:
- При установке Dev-C++.
- Через настройки программы, если Dev-С++ уже установлена.
Если вас заинтересовала эта статья, то, скорее всего, при установке вы выбрали другой язык.
В этом случае установить русский язык можно так:
1) В меню TOOLS выбрать ENVIRONMENT OPTIONS.

2) В открывшемся окне выбрать вкладку INTERFACE.
3) В списке LANGUAGE выбрать RUSSIAN.
4) Нажать кнопку ОК.

Всё. Теперь вам будет более понятно то, что я рассказываю в своих книгах и статьях.
Ну а если вам потребуется вновь изменить эти настройки, то в русском интерфейсе путь будет таким:
СЕРВИС - ПАРАМЕТРЫ СРЕДЫ - ИНТЕРФЕЙС - ЯЗЫК.
ПРИМЕЧАНИЕ
Многих трудностей в изучении программирования вы сможете избежать, если будете знать хотя бы в основе английский язык.
Настройка интегрированных сред для языков C и C++


На данной странице приводятся указания по настройке сред Visual Studio, Dev-C++, Code::Blocks и VS Code для выполнения учебных заданий на языках C и C++.
Среда Visual Studio 2017, 2019, 2022 (язык C++)
1. Скачайте и установите среду Visual Studio требуемой версии с сайта Microsoft https://visualstudio.microsoft.com/ru/downloads/. Для корректной работы с программами на языке C++ необходимо установить расширение «Разработка классических приложений на С++», используя программу Visual Studio Installer (для установки новых расширений для одного из имеющихся вариантов Visual Studio надо нажать кнопку Изменить рядом с описанием этого варианта).

2. Запустите программу PT4Setup, входящую в состав электронного задачника (Пуск | Все программы | Programming Taskbook 4 | PT4 Setup), и убедитесь, что задачник обнаружил среду Microsoft Visual C++ соответствующей версии (2017, 2019 или 2022). Если путь к исполняемому файлу devenv.exe не найден задачником, то укажите его, нажав кнопку Обзор. При стандартной установке данный файл располагается в каталоге C:\Program Files\Microsoft Visual Studio\XXXX\Community\Common7\IDE или C:\Program Files (x86)\Microsoft Visual Studio\20XX\Community\Common7\IDE , где каталог 20XX соответствует номеру версии (2017, 2019 или 2022). Закройте программу PT4Setup.
В результате описанных действий задачник будет настроен для использования в среде Visual Studio для языка С++.
Среда Dev-C++ (языки C и C++)
1. Скачайте и установите среду Dev-C++. Версию 5.11 можно скачать с сайта https://sourceforge.net/projects/orwelldevcpp/ (можно также воспользоваться следующей ссылкой). Версию 6.30 можно скачать с сайта https://www.embarcadero.com/ru/free-tools/dev-cpp (хотя удобнее воспользоваться следующей ссылкой). Версия 6.30 включает более новый вариант компилятора MinGW; кроме того, встроенный в нее редактор поддерживает кодировку UTF-8.
2. Запустите программу PT4Setup, входящую в состав электронного задачника (Пуск | Все программы | Programming Taskbook 4 | PT4 Setup), и убедитесь, что задачник обнаружил среды Dev-C++ (C) и Dev-C++ (C++) (вариант среды Dev-C++ для языка C добавлен в версии задачника 4.23). Если путь к исполняемому файлу devcpp.exe не найден задачником, то укажите его, нажав кнопку Обзор. При стандартной установке данный файл располагается в каталоге C:\Program Files (x86)\Dev-Cpp для версии 5.11 и в каталоге C:\Program Files (x86)\Embarcadero\Dev-Cpp для версии 6.30. Закройте программу PT4Setup.
В результате описанных действий задачник будет настроен для использования в среде Dev-C++ для языков C и С++.
Среда Code::Blocks (языки C и C++)
1. Скачайте и установите среду Code::Blocks 20.03 с 32-разрядным вариантом системы MinGW, используя ссылку https://www.fosshub.com/Code-Blocks.php. В списке доступных вариантов Необходимо выбрать вариант Code Blocks Windows 32 bit (including 32 bit compiler). При отсутствии требуемого варианта дистрибутив можно скачать по следующей ссылке.
2. Запустите программу PT4Setup, входящую в состав электронного задачника (Пуск | Все программы | Programming Taskbook 4 | PT4 Setup), и убедитесь, что задачник обнаружил среды Code::Blocks (C) и Code::Blocks (C++) (вариант среды Code::Blocks для языка C добавлен в версии задачника 4.23). Если путь к исполняемому файлу codeblocks.exe не найден задачником, то укажите его, нажав кнопку Обзор. При стандартной установке данный файл располагается в каталоге C:\Program Files (x86)\CodeBlocks . Закройте программу PT4Setup.
3. Запустите программу PT4Load, входящую в состав электронного задачника, в ее окне вызовите контекстное меню (нажав правую кнопку мыши) и выберите в нем пункт Code::Blocks (C) или Code::Blocks (C++). В поле Задание (или Task при использовании английского интерфейса) укажите имя какого-либо задания (например, Begin1) и нажмите клавишу [Enter] или кнопку Загрузка (Load). Созданная заготовка должна загрузиться в редактор Code::Blocks. В меню Code::Blocks выполните команду Settings | Compiler. , в появившемся окне перейдите на вкладку Toolchain executables и убедитесь, что в поле ввода Compiler installation directory указан путь к подкаталогу MinGW системного каталога Code::Blocks (например, C:\Program Files (x86)\CodeBlocks\MinGW ). Если в данном поле содержится другой путь, то замените его на указанный выше. Закройте окно настройки, нажав кнопку OK. Запустите созданную заготовку, нажав клавишу [F9]. При успешной настройке среды Code::Blocks должно появиться окно задачника с выбранным заданием.
В результате описанных действий задачник будет настроен для использования в среде Code::Blocks для языков C и С++.
Среда VS Code
1. Установите среду Dev-C++ или Code::Blocks, выполнив действия, указанные в соответствующих подразделах.
2. Установите среду VS Code https://code.visualstudio.com/download#, вариант Windows, 64 bit, User Installer или System Installer (при выборе System Installer среда устанавливается в каталоге C:\Program Files , при выборе User Installer в подкаталоге каталога, связанного с текущим пользователем, например, C:\Users\\AppData\Local\Programs\Microsoft VS Code ).
3. Запустите программу PT4Setup, входящую в состав электронного задачника (Пуск | Все программы | Programming Taskbook 4 | PT4 Setup), и убедитесь, что задачник обнаружил среду Visual Studio Code (C) и Visual Studio Code (C++) (вариант среды Visual Studio Code для языка C добавлен в версии задачника 4.23). Если путь к исполняемому файлу Code.exe не найден задачником, то укажите его, нажав кнопку Обзор.
4. В том же разделе программы PT4Setup выберите среду Visual Studio Code (C++), нажмите кнопку Дополнительная настройка (F9) и убедитесь, что в появившемся окне Дополнительная настройка указан путь к компилятору g++ из дистрибутива MinGW (выбирается компилятор, входящий в состав системы Dev-C++ или Code::Blocks, ранее настроенной для задачника). Если задачник не смог автоматически обнаружить путь к компилятору g++, можно указать его, нажав в окне Дополнительная настройка кнопку Обзор. По умолчанию файл g++.exe располагается в подкаталоге MinGW64\bin системного каталога среды Dev-C++ 5.11, в подкаталоге TDM-GCC-64\bin системного каталога среды Dev-C++ 6.30 и в подкаталоге MinGW\bin системного каталога среды Code::Blocks 20.03.
Выполните аналогичные действия для среды Visual Studio Code (C). В данном случае в окне Дополнительная настройка надо указать указан путь к компилятору gcc из дистрибутива MinGW. Файл gcc.exe находится в тех же каталогах, что и файл g++.exe, использованный при настройке среды Visual Studio Code (C++).
Закройте программу PT4Setup.
5. Запустите программу PT4Load, входящую в состав электронного задачника, в ее окне вызовите контекстное меню (нажав правую кнопку мыши) и выберите в нем пункт Visual Studio Code (C) или Visual Studio Code (C++). В поле Задание (или Task при использовании английского интерфейса) укажите имя какого-либо задания (например, Begin1) и нажмите клавишу [Enter] или кнопку Загрузка (Load). Созданная заготовка (файл с расширением .c или .cpp) должна загрузиться в редактор VS Code. При первой загрузке файла редактор VS Code может предложить установить расширение (extension) для языка C++. В этом случае достаточно нажать кнопку Install:


Если указанное выше окно не появится, то установить расширение для языка C++ можно, выполнив стандартные действия для установки новых расширений: отобразите в левой части окна VS Code панель Extensions со списком доступных расширений (нажав кнопку или комбинацию клавиш [Ctrl]+[Shift]+[X]), выберите из списка расширений вариант C/C++ Extension Pack (Microsoft) и нажмите связанную с ним кнопку Install. Чтобы отобразить список расширений для языка C++, достаточно ввести текст C++ в поле поиска в верхней части панели Extensions.

После установки данного расширения появится возможность запускать программы C и C++ из среды VS Code нажатием клавиши [F5].
В результате описанных действий задачник будет настроен для использования в среде VS Code для языков C и C++.
Примечание. При попытке откомпилировать и запустить программу на языках C или C++ из среды VS Code без предварительной установки нужного расширения будет выведено окно с сообщением об ошибке, которое надо закрыть, нажав кнопку Cancel. Ниже приведен вариант сообщения об ошибке в случае языка C++:
Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode
Как включить русский язык в Си
На начальных этапах программирования многие новички сталкиваются с такой проблемой: они в коде пишут какое-либо сообщение на русском языке для консоли (например, используя printf), но при запуске программы вместо русских слов появляются какие-то непонятные знаки. Покажем, как избавиться от этой проблемы.
Например, при запуске вот этой программы:
#include "stdafx.h"
int _tmain ( int argc , _TCHAR* argv [ ] )
printf ( "Всем привет! Как дела?" ) ;
В консоли будет отображено следующее:

Всё дело в том, что мы не подключили русскую локализацию.
Исправить эту ошибку очень легко!
Для начала надо добавить следующую библиотеку:
Она отвечает за локализацию.
А затем нам надо просто написать в начале тела кода вот эту строку:
setlocale ( LC_ALL , "Rus" ) ;
Функция setlocale задаёт локализацию программы. По умолчанию это только английский язык.
LC_ALL указывает программе, что локализированы будут все функции.
«Rus», как легко догадаться говорит о том, что локализация произойдёт на русский язык.
Вот и всё! Мы включили русский язык в Си. Наша программа модернизирована и обогащена на две строки. Теперь она будет выглядеть вот так: