You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10下输出XP风格ASCII控制字符的方法求助

解决Windows 10控制台输出ASCII控制字符(如代码页437笑脸)的问题

核心原因

你遇到的问题本质是Windows 10控制台默认使用的TrueType字体不支持代码页437的低ASCII图形字符,哪怕调用SetConsoleOutputCP(437)修改了代码页,字体里没有对应字形,还是会显示带问号的方框。

解决步骤

1. 更换控制台字体为支持代码页437的点阵字体

右键控制台窗口标题栏 → 选择「属性」→ 切换到「字体」标签页,选择Terminal或Lucida Console(推荐Terminal,纯点阵字体完美兼容DOS时代的代码页437字符),点击确定保存设置。

2. 在代码中正确配置控制台代码页

确保在输出字符前调用代码页设置函数,这里提供两种可靠实现方式:

方式一:使用C++标准库

#include <iostream>
#include <windows.h>

int main() {
    // 设置控制台输入输出代码页为437
    SetConsoleOutputCP(437);
    SetConsoleCP(437);
    
    // 输出ASCII 1对应的笑脸字符
    std::cout << char(1) << std::endl;
    return 0;
}

方式二:使用Win32 API直接输出(避免标准库编码转换干扰)

如果方式一仍有问题,直接调用Windows原生API写入控制台:

#include <windows.h>

int main() {
    SetConsoleOutputCP(437);
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    char smiley = 1;
    DWORD written;
    WriteConsoleA(hConsole, &smiley, 1, &written, NULL);
    return 0;
}

3. 验证设置是否生效

运行代码前,可以在控制台手动执行chcp 437确认代码页切换成功,再运行程序就能看到熟悉的笑脸符号了。

内容的提问来源于stack exchange,提问作者Ninja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:51:53