Как в clion поставить русский язык

Отображение кириллицы в CLion

Нужна помощь: не отображается кириллица в терминале CLion. Вот так выглядит надпись «Привет, Мир!»:

Вот что будет с кодировкой windows-1251 :

Vladimir Gamalyan's user avatar

Почему так происходит?

CLion по дефолту использует UTF-8 для хранения файлов с исходным кодом. Строка «Привет, Мир!» будет представлять собой последовательность (в файле с исходником):

Как видите, на 12 символов исходной строки, получили 21 байт (т.к. кириллические символы занимают больше одного байта).

Компилятор GCC по умолчанию читает исходники в кодировке UTF8 , если не указать другую через ключ -finput-charset . Таким образом эта последовательность байтов в неизменном виде сохранится в исполняемый файл.

При запуске программы на исполнение, CLion использует стандартный cmd.exe , который по умолчанию скорей всего у вас работает в кодировке CP866 . В которой наша последовательность байтов будет отображена как:

(что вы и видите в терминале CLion)

Что делать?

Вариант 1

Сменить кодировку файла на IBM866 (то же, что и CP866 ) (настройки — File Encodings) (сам файл перекодировать, если в нем уже был текст на русском). Теперь кириллица будет сохраняться в файле с исходным текстом в кодировке CP866 (один байт на символ), в том же виде попадать в исполняемый файл и нормально отображаться в консоли CLion. Разумеется, использовать CP866 в 19-м году, без особых на то оснований, некультурно. Кроме того придется ограничить себя символами из CP866 .

Вариант 2

Вставить в начало свой программы:

или (потребует #include <windows.h> ):

Консоль переключится в UTF-8 , все будет отображаться как надо. Но только при использовании низкоуровневых операций вывода типа puts(«Привет, Мир!»); . Если выводить через std::cout , то возможен вывод типа ��ривет, Мир! . Это связано с тем, что функция Windows API для вывода в консоль ожидает увидеть в каждом вызове законченную строку. И если оператор basic_ostream<char>::operator<<(char*) для символа ‘П’ выполнит два API вызова (с D0 и 9F ), то они не сольются в одну букву ‘П’, а будут интерпретированы и отображены как два разных символа ( �� ).

Предостережение

При использовании UTF-8 в своей программе, например при хранении в std::string , следует помнить, что операции над строками могут дать не очевидные результаты (т.к. один символ теперь может занимать от 1 до 4 байтов).

Кроме вывода, аналогичные проблемы ожидают и при вводе из std::cin . Таким образом, единственным прозрачным решением для Windows (даже десятки), пока остается использование латиницы.

Как настроить кодировку в clion, чтобы корректно отображался русский алфавит?

Здравствуйте! Не могу найти в интернете, как настроить кодировку, чтобы корректно выводить русские буквы в CLion. Прилагаю скриншот проблемы 60ed85e171f1c791869082.png

  • Вопрос задан более года назад
  • 2800 просмотров

Простой 1 комментарий

  • Facebook
  • Вконтакте
  • Twitter

Не знаю как задать кодировку консоли в CLion, наверняка как-то это делается.
Но советую вам запускайть программу в обычной консоли (cmd.exe).
Т.к. IDE обычно настраивают консоль под себя. А работать ваша программа будет вообще то без IDE. Поэтому не сильно интересно, чтоб программа корректно работала под IDE. Гораздо интереснее, чтоб программа работала нормально в обычной обстановке.
Еще могу сразу предупредить — в русской винде в консоли может быть 2 русских кодировки. По умолчанию используется cp866. Но командами консоли кодировку можно сменить на cp1251. Так же кодировку можно сменить и на UTF-8, но с ней многие команды не дружат, поэтому она практически не используется в консоли.
Если ваша программа будет осуществлять консольный ввод/вывод только в одной кодировке, то при переключении кодировки в консоли, ваша программа будет отрабатывать не корректно (так же как сейчас).
Ваш компилятор, сам язык и стандартная библиотека ничего не знают о кодировках консоли и ничего не делают специально, чтоб вывод был корректный. Т.е. выводится в консоль именно то, что вы написали в исходниках.

Можно писать программу так, что бы она корректно работала не зависимо от кодировок консоли. Но это несколько сложней обычного printf.

Русские Блоги

Установка и настройка Clion (артефакт разработки C / C ++)

Установка и настройка Clion

Каталог статей

Введение

Я не знаю, с какими артефактами разработки контактировали мои друзья. По сравнению с компиляторами, с которыми я сейчас общаюсь, существует множество компиляторов, таких как DEV C ++, EditPlus, Eclipse, Pycharm, Vistual Stdio, Vistual Code. Для программистов, разрабатывающих C / C ++, один Хороший компилятор — это мощный инструмент для начала вашего эффективного обучения и работы.Установка хорошего компилятора может сделать вашу разработку более эффективной.
Сегодня я рекомендую очень хорошую IDE разработчикам C / C ++, то есть CLion, недавно выпущенный Jetbrains (Чешская Республика) для разработки C / C ++. Разработанная кроссплатформенная среда IDE основана на IntelliJ, а также содержит множество интеллектуальных функций для повышения продуктивности разработчиков и повышения эффективности их работы. Кроме того, JetBrains имеет множество отличных IDE, таких как упомянутый выше Pycharm, который очень подходит для разработки. Далее я объясню методы установки и настройки, а также использование сочетаний клавиш.

Два, инструменты

Адрес загрузки Clion:кликните сюда

Три, установка и активация

Дважды щелкните исполняемый файл после загрузки, появится следующий интерфейс

После завершения распаковки войдите в приветственный интерфейс.

Выберите путь установки, нажмите Далее (PS: постарайтесь не выбирать установку под файлом диска C)

В это время выберите три верхних и нижнюю панель, пожалуйста, выберите нужный вам элемент. После выбора щелкните Далее.

Тогда просто подожди

Дождавшись запроса о завершении установки, нажмите Finsh, появится следующий интерфейс.

После завершения установки на рабочем столе появится ярлык Clion, нажмите, чтобы войти

Нажмите кнопку Enter (посередине), а затем вставьте ключ ниже, чтобы войти в CLion.

Здесь вам необходимо получить ключ активации, и это рекомендуется тем, кто может купить законные авторские права!
Лицензию IntelliJ IDEA можно получить следующими способами:
1. Получить через студенческий билет, идентификатор учителя или почтовый ящик edu;
2. Вы также можете подать заявку через собственный проект с открытым исходным кодом;
3. У продукта есть 30-дневный пробный период, вы можете сначала попробовать его, а затем выбрать, нужно ли вам его покупать.
Конкретные сведения: вы можете посетить официальный веб-сайт приложения. https://www.jetbrains.com/idea/buy/

В-третьих, установите отладчик компилятора

После завершения активации наиболее важным шагом является то, что на компьютере не установлен отладчик компилятора CMake / MinGW.Если компилятор DEV C ++ был установлен, вы можете совместно использовать отладчик компилятора MinGW.

Щелкните Файл, затем выберите Настройки, появится следующий интерфейс.

Выберите Toolchains в разделе Build, Execution, Deployment, а затем выберите Environment справа.

Выберите файл MinGW под файлом DEV C ++, и настройка выполнена успешно!

Четыре, горячие клавиши

5. Создайте проект и программу отладки.

  1. Создать пустой проект
  2. Выберите место хранения и языковой стандарт проекта и действуйте в соответствии с рисунком.Первый шаг — выбрать тип создаваемого проекта — C или C ++, второй шаг — выбрать языковой стандарт, третий шаг — выбрать место хранения файла, а четвертый шаг — щелкнуть Создайте.
  3. Когда файл проекта создается так
  4. Напишите простую программу и отлаживайте ее. Добавляем в программу точку останова, выбираем DEBUG
  5. Если вы хотите создать несколько исходных файлов в одном файле проекта, вам необходимо изменить имя исходного файла и изменить информацию в CMakeLists (выберите исходный файл, нажмите Refactor, а затем выберите Rename)
    Примечание: не называйте исходный файл на китайском языке.

Шесть, скомпилируйте несколько файлов

Добавьте несколько исходных файлов в проект. Как мы все знаем, в проекте разрешена только одна основная функция. Если основных функций несколько, функция не будет запущена, и будет сообщено об ошибке. Итак, что нам делать, чтобы создать несколько исходных файлов для компиляции и отладки в рамках проекта?

  1. Щелкните Project, выберите New, а затем выберите C / C ++ Source File.
  2. Выберите имя и тип исходного файла, нажмите ОК.
  3. На этом этапе вновь созданный исходный файл предложит
  4. Откройте файл CMakeLists и добавьте информацию о компиляции
    Первым шагом является добавление скомпилированного проекта. Вам не нужно добавлять созданный проект Project. Вы можете изменить его. Ниже приведен только что созданный исходный файл.
    Второй шаг — нажать «Обновить изменения», и изменения будут успешными! !
  5. Отредактируйте второй файл программы!

Семь, конец

На этом мы завершили всю настройку, и следующая работа по разработке остается за вами! Посыпать

Русские символы(буквы) при вводе/выводе в консоль на C++

При изучении языка C++ и программировании под Windows довольно часто возникают вопросы по поводу отображения русских букв в консоли. Вывод и ввод русских букв сопровождается выводом и вводом каких-то кракозябр или иероглифов. В интернете можно найти довольно много советов, но большая часть советов, которые мне попались, не помогали в решении проблемы.

Возникла проблема с отображением русских букв

Если нужно быстрое решение данной проблемы, то можно сразу пролистать вниз, ибо сначала я расскажу о том, как возникла эта проблема у меня и о том, как я искал решение.

На языке C++ программирую под ОС Linux, использую компилятор GCC. С проблемой неправильного отображения русских букв я не сталкивался. В момент написания статьи я нахожусь далеко от своего компьютера, могу довольствоваться лишь скромненьким ноутбуком с установленной ОС Windows Seven. Захотелось покодить и я установил на него интегрированную среду разработки Dev-C++ 5.10(использует компилятор TDM-GCC 4.8.1 на базе GCC 4.8.1). Кстати, она уже официально не поддерживается, но существует форк Orwell Dev-C++, который обновляется по сей день. Установив, я запустил и для пробы написал простую программку, которая отображает текст «Привет, мир!». Но поздороваться она с миром так и не смогла, а лишь сказала что-то непонятное на древнеегипетском. После перелопачивания некоторых форумов и сайтов я нашел множество советов, но основная масса не способна была решить её полностью, образовывались подводные камни о которых расскажу далее.

После написания, компиляции и запуска такой программы:

Можно получить примерно такой результат

Вывод кракозябр в консоль

Сразу понятно, что на приветствие это совсем не похоже.

После прочтения кучи советов стало понятно, что большая часть советов предлагала решить проблему функцией setlocale(), которая находится в заголовочном файле <clocale>.

Последовав совету и усовершенствовав программу таким образом:

Дополнительно: можно было написать setlocale(0, «») и результат был бы аналогичным, при условии, что в настройках ОС язык системы русский.

На вывод я получил следующий результат

Отлично, подумал я. Казалось бы, что проблема решена и программа здоровается на родном языке, но вот именно здесь оказались подводные камни.

О них я узнал из обсуждения. У человека была аналогичная проблема, решенная таким образом. Но решение удовлетворяло его недолго, он сообщил, что программа при вводе данных и последующем их выводе не выводит на руском, она говорит на непонятном языке.

Коль уж так, я решил вновь внести изменения в программу, пусть она поздоровается со мной по имени.

Но в результате я получил не приветствие

Оскорбление на древнеегипетском?

Как видно, она не смогла назвать моего имени.

Поискав информацию в сети, я узнал о том, что setlocale() не работает с потокоми ввода/вывода, а то есть с cin,cout,etc. Выходит, что нужно искать альтернативные способы решения данной проблемы, которые предлагались на других сайтах.

Решение проблемы с отображением русских букв в консоли

По-другому решить проблему можно было воспользовавшись функциями SetConsoleCP() и SetConsoleOutputCP() с аргуменом 1251 в обеих. Эти функции требуют подключения заголовка <Windows.h>, практически в каждом компиляторе под Windows он имеется, проблем не будет.

Усовершенствовал программу таким образом

На вывод получил

Вновь кракозябры в консоли

Вновь кракозябры в консоли

Снова что-то непонятное. Но решение, как оказалось, находилось очень близко. У функций SetConsoleCP() и SetConsoleOutputCP() есть небольшой недостаток — они работают только со шрифтом Lucida Console. В консоли же по умолчанию стоит шрифт Consolas, либо точечные шрифты. Следующим этапом сделать нужно вот что. Находясь в консоли нажать кнопку Cmd или нажать на значек программы в левом верхнем углу(Перед D:\… в названии), то есть вызвать контекстное меню окна. Далее нажать «Свойства».

Контекстное меню консоли

Контекстное меню консоли

Далее появится окно с настройками, там необходимо выбрать шрифт Lucida Console.

Свойства консоли Windows

Свойства консоли Windows

И нажать на кнопку ОК.

После такой процедуры я вновь запустил программу и…

Работа программы

Да! Она поздоровалась со мной по имени на русском языке.

Данный способ помог решить мне проблему с отображением русских символов в консоли Windows, надеюсь, что кому-нибудь еще он тоже поможет. Спасибо за внимание.

Для вас это может быть интересно:

Русские символы(буквы) при вводе/выводе в консоль на C++ : 29 комментариев

Блин все делаю как показано но все равно не получается в свойствах консоли установлен шрифт Lucida Console может поможете)
Пишу:
#include
#include
#include

using namespace std;

int main()
<
setlocale(LC_ALL,»Russian»);
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout << "Привет, Мир!";
return 0;
>

  1. Nicknixer Автор записи 07.12.2015

Проверил у себя — всё работает и отображает верно. Попробуйте набрать такую же программу, как на рисунке здесь http://nicknixer.ru/?p=349

Строчка setlocale(LC_ALL,»Russian») не нужна, без нее все работает.

тебе нужно понять что тебе нужно, если только вывести текст то оставь setlocal(LC_ALL, «Russian»)
ну а если у тебя будет переменная напримере кода
int main()
<
char name [12];
cout << "как тебя зовут?";
cin << name;
cout << "привет, " << name;
return 0;
>
то получится что ничего не получится, в этом случае используй setconsolecp(1251); setconsoleoutputcp(1251); и тогда всё будет корректно отображаться. по поводу программы ide я использую visual studios 2019 и всё нормально работает

В консоли 866 кодовая страница. Можно проще — Creator — Настройки — редактор — кодовая страница 866. Заработает самая первая программа.

Спасибо за 866 кодовую таблицу, все заработало.

Мучался 2 часа с выводом русских букв!
Перечитал кучу пустых советов.
Наконец-то.
Этот— самый толковый способ сделать так, чтобы все работало, и писало по русски!!
Благодарю Вас.

  1. Nicknixer Автор записи 14.10.2016

Я рад тому, что это помогло мне, Вам и другим людям.

Вижу, что не только в вебе проблема с отображением русских букв. PHP- программисты с вами!

Большое человеческое спасибо!
Очень помогли дельным советом. Всё работает как надо!

Спасибо!по полочкам и правильно всё разложено)

На мой взгляд, самый простой и действенный способ вывода русских букв в консоли Windows: писать исходники в ее родной кодировке, т. е. в OEM866 и проблем никаких не возникнет. Тем более, что почти все текстовые редакторы ее поддерживают. Для удобства можно установить эту кодировку по умолчанию в тот же Notepad++.
И не надо танцевать с бубном, подключать заголовки, использовать дополнительные функции, менять шрифты и т.д.

Спасибо, дай те бог здоровья!!

Благодарю за эти советы, они действующие, доходчивые. Ушла минута на то, что долго не мог сделать

6 часов искал ответ!Спасибо !

Лайфхак от «Специалист»
После main
system(«chcp 1251 > nul»);

Имеется ввиду после фигурных скобок, т.е. в тело программы

Вообще-то setlocale() и всё вокруг неё касается преобразований WCHAR -> BYTE -> WCHAR у CRT функций (ну например если выводить тот-же самый «Привет мир» вот так:

setlocale( LC_ALL, «.OCP» );
wprintf(L»Привет мир!»);

То будет уже профит.
В свою очередь SetConsoleOutputCP() нужна примерно для того-же — на Винде с чужой кодировкой выводить юникодные строки кирилицей.
ну а так Taras Lavrov верно указал как это для неюникодных программ делается.

Спасибо большое!Очень помогло.С начала про поток вывода узнал где то недели 2 назад, вчера заинтересовало почему поток ввода не работает. Менее минуты и вуаля. Надеюсь ругаться там не будет никто на счёт заголовочных файлов, но…ОС у всех разные, преобразователи (компиляторы) разные. Вот поэтому и советы для всех разные. Кому то кодировку сменить, а многим многим остальным дополнительные код надо писать. Может когда напишем собственную ОС(хотя кое что такое у нас было когда то давно) тогда ничего этого не надо будет. Автору статьи большое спасибо ещё раз. Русский язык стараюсь вписать куда угодно лишь бы было по русски. Надеюсь, это никого не задевает

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *