编程语言:C
IDE:代码块
编译器:GNU GCC编译器
操作系统:Windows 7
我的cmd默认为代码页852,所以我决定使用setlocale()来使用以下命令将其设置为代码页437
setlocale(LC_ALL, "English_United States.437")
但是这样做会使某些字母/符号显示为'?'代替。有什么办法解决吗?
答案 0 :(得分:0)
请注意,ASCII表的非扩展字符从0到127,要处理扩展字符,请使用wchar_t
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(void)
{
wchar_t c;
setlocale(LC_ALL, "English_United States.437");
for (c = 32; c < 256; c++) {
wprintf(L"%lc\n", c);
}
return 0;
}
答案 1 :(得分:0)
所以我找到了两种解决方案。
1。 您可以在控制面板下更改系统默认代码页,但这将需要重新启动计算机,这是不切实际的,但是您可以使用光栅字体。
2。 使用“ system(” chcp 437“);”会将代码页设置为437,但是您将需要使用“ Lucida Console”之类的字体将字符/符号显示为光栅字体,由于某种原因,如果您这样更改代码页,将无法正确打印字符/符号。< / p>