问题描述
我在 Windows 10 中运行 CodeBlocks,即使按照 some 在 SO 上找到的指示,我也没有设法打印 cosole utf8 字符。
_setmode(_fileno(stdout),0x00020000); // _O_U16TEXT
setlocale(LC_ALL,"C.UTF-8");
wchar_t star = 0x2605;
wchar_t st = L'★';
if (printf("%lc\n",star) < 0) {
perror("printf");
}
if (printf("\n%lc\n",st) < 0) {
perror("printf");
}
给出输出
printf: Invalid argument
printf: Invalid argument
控制台属性>>字体设置为Lucida Console,类似于codeblocks代码编辑器。我可以在文本编辑器中看到星星作为符号,但在控制台中看不到。我该怎么办?
编辑:
即使我把之前的代码改成:
if (wprintf(L"%lc",star) < 0) {
perror("printf");
}
printf("\n");
if (wprintf(L"%lc",st) < 0) {
perror("printf");
}
我看不到两个以上的矩形而不是星星(如果我复制并尝试将它们粘贴到此处,则会以正确的方式绘制)
解决方法
在控制台中尝试了所有可用的字体后,唯一让我看到实际星星的是 SimSun-ExtB
。