@ChainikPythonovski
Чайник

C++. Почему в консоли выводит непонятные символы, хотя setlocale(LC_ALL, "RU") прописан?

#include <iostream>
#include <string>
using namespace std;


int main()
{
	setlocale(LC_ALL, "RU");
	
	string words;
	cin >> words;
	cout << words;
	return 0;
}


Ввожу русские слово, а на выводе получаю слово на эльфийском
Например:
64a41da8d5479157772559.png
Почему так?
  • Вопрос задан
  • 1242 просмотра
Решения вопроса 1
@code_panik
Если кратко, то у windows беда с многообразием представлений символов (кодировок) в терминале. Есть однобайтовые 866 (стандартная терминала), 1251 (ansi), есть многобайтовая 65001 (utf-8). Чтобы проверить кодировку, в терминале наберите chcp. Если нет особых требований к работе с кодировками, достаточно обычного подхода
#include <iostream>
#include <string>
using namespace std;

int main()
{
  string words;
  cin >> words;
  cout << words;
  return 0;
}

Пример работает с 866 и 1251.
Если нужна кодировка 1251 (и она не выбрана для терминала по умолчанию при запуске), запускайте программу из подготовленного окна терминала. Для этого в терминале наберите сначала однажды chcp 1251. Кодировка может понадобиться, если в исходном коде программы в кодировке 1251 будут строки с кириллицей.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы