Цель программы — получить символ и тут же отобразить его на экране. Но проблема в том, что он выводит другой символ или вообще ничего. Я обнаружил, что на выходе используется кодировка Windows-1251, а на входе — CP866. Как решить эту проблему? Как сделать вывод и ввод в кодировке Windows-1251.
Post Scriptum: проблема появляется при вводе кириллического символа.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(void)
{
setlocale(LC_ALL, "");
printf("Уведіть символ.\n");
char ch = getchar();
printf("\n");
printf("%c", ch);
getchar();
getchar();
return 0;
}
Пробовал использовать wchar_t
(соответственно процедуры wprintf()
, getwchar()
), но ситуация не изменилась.
Может быть, это поможет? https://stackoverflow.com/a/44167461/8893124 предлагают установить:
system("chcp 1251");
setlocale(LC_ALL, "UTF8");
Я нашел другой способ решить эту проблему. Может быть, кто-то найдет это полезным. Однако он работает только для Windows. Для этого нужно подключить заголовочный файл <windows.h> и написать перед входом следующее:
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Тогда ввод/вывод будет в кодировке Windows-1251.