首页 > 解决方案 > 为什么 setlocale 给我?而不是普通的字母?

问题描述

编程语言:C

IDE:代码块

编译器:GNU GCC 编译器

操作系统:Windows 7

我的 cmd 默认为代码页 852,所以我决定使用 setlocale(),将其设置为代码页 437

setlocale(LC_ALL, "English_United States.437")

但这样做会使一些字母/符号显示为“?” 反而。有任何解决这个问题的方法吗?

标签: clocalecodepagessetlocalecodepage-437

解决方案


请注意,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;
}

推荐阅读