«Некоторые символы Юникода не могут быть сохранены в текущей кодовой странице» с использованием кириллицы в C - PullRequest
0 голосов
/ 04 января 2019

Я изо всех сил стараюсь, чтобы текст в моей программе отображался на болгарском языке с использованием кириллицы.

Я пробовал 'SetConsoleOutputCP(1251)' так же, как и 'SetConsoleCP(1251)', но ни один из них не работал. Я использую VS2018, и файл сохраняется как file.c. При попытке компилирования появляется предупреждение:

"Some unicode characters can't be saved in the current codepage."

код

#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#include<string.h>

SetConsoleOutputCP(1251)
int i;

int main() {
  i=choice();
  printf("%d\n",i);
  system("pause");
  return 0;
}

int choice(void) {
  printf("избор\n");
  printf("1.четене от файл и запис\n");
  printf("2.четене и извеждане на резултата\n");
  printf("3.четене от клавиатура и запис\n");
  printf("4.четене от клавиатура и извеждане\n ");
  printf("5.изход\n");

  do {
    scanf_s("%d",&i);
  } while (i < 1 || i > 5);
  return i;
}

1 Ответ

0 голосов
/ 05 января 2019

Если ваша система настроена на использование кодовой страницы ANSI, отличной от 1251, и вы сохраняете файл в другой кодовой странице или в Unicode (UTF8 или UTF16), компилятор не будет распознавать символы кириллицы.

Таким образом, вы должны сохранить файл * .c в кодовой странице 1251, как показано на рисунке ниже.

enter image description here

Лучшее решение - сохранить файл в Unicode (предпочтительнее UTF8), а затем использовать широкие строковые функции во всей программе. Однако _setmode зависит от Visual Studio. Вы не можете использовать printf и звонить _setmode(_fileno(stdin), _O_U16TEXT);.

#include <stdio.h>
#include <Windows.h>
#include <io.h> 
#include <fcntl.h>

int main(void)
{
    _setmode(_fileno(stdout), _O_U16TEXT);
    _setmode(_fileno(stdin), _O_U16TEXT);
    wprintf(L"1.четене от файл и запис + English\n");
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...