我正在努力使用Cyrillic使程序中的文本以保加利亚语显示。
我已经尝试过10/10/2018 20:00
11/19/2018 14:15
12/10/2018 18:51
10/29/2018 7:30
10/7/2018 14:30
1/2/2019 0:01
和'SetConsoleOutputCP(1251)'
,但是他们都不起作用。我正在使用VS2018,文件已另存为'SetConsoleCP(1251)'
。尝试编译警告时:
file.c
代码
"Some unicode characters can't be saved in the current codepage."
答案 0 :(得分:1)
如果系统设置为使用1251以外的ANSI代码页,并且将文件保存在其他代码页或Unicode(UTF8或UTF16)中,则编译器将无法识别西里尔字符。
因此,您必须将* .c文件保存在代码页1251中,如下图所示。
更好的解决方案是将文件保存为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;
}