我如何从 VS2019 控制台读取西里尔文字

问题描述 投票:0回答:1
int main() {
    char faculty[20];
    ss=setlocale(LC_ALL, "");
    f = fopen("input.txt", "r");
    printf("Введите название факультета \n");
    scanf("%s", faculty);
    fgets(faculty, 19, f);  
    ....................... 

我无法从控制台读取西里尔文字。 我尝试更改字体、setlocale 参数,但没有任何帮助。 scanf 函数返回(看起来是这样)utf-16。 输出到控制台就可以了。 控制台中的默认代码页 - 866,我不知道如何更改它;

visual-studio character-encoding console cyrillic
1个回答
0
投票

输入的代码页可能是错误的。我想您正在 Windows 中运行代码,因此您可以使用 SetConsoleCP 更改它。尝试使用代码页 1251(ANSI 西里尔文;西里尔文 (Windows))。它应该或多或少类似于以下代码:

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <Windows.h>

int main()
{
    wchar_t faculty[1024] = L"";

    setlocale(LC_ALL, "Russian");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    wprintf(L"Введите название факультета \n");
    wscanf(L"%s", faculty);
    wprintf(L"%s\n", faculty);
}
© www.soinside.com 2019 - 2024. All rights reserved.