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

Windows系统下用C语言打印ASCII 128-255字符显示异常如何解决?

Windows下C语言打印128-255扩展ASCII字符的解决方法

你遇到的问题确实是编码不匹配导致的——Windows控制台默认使用的编码(通常是GBK或UTF-8)和你期望的**DOS扩展ASCII(CP437编码)**不一致,直接用printf("%c")输出会出现乱码。以下是两种简单的解决办法:

方法一:在代码中强制设置控制台输出编码

通过Windows API修改控制台的输出代码页为CP437(对应你想要的那套扩展ASCII字符),修改后的代码如下:

#include <stdio.h>
#include <windows.h>  // 引入Windows API头文件

int main() {
    // 设置控制台输出代码页为CP437(DOS扩展ASCII编码)
    SetConsoleOutputCP(437);
    
    for(unsigned int ch = 128; ch < 256; ch++) {
        printf("%d = %c\t\t", ch, ch);
        // 每4个字符换行,避免输出过于拥挤
        if((ch - 127) % 4 == 0) {
            printf("\n");
        }
    }
    return 0;
}

方法二:手动修改控制台代码页再运行程序

  1. 打开命令提示符(CMD),执行命令:
    chcp 437
    
  2. 在当前窗口运行你的C程序,即可正常显示期望的字符。

补充说明

CP437是DOS系统默认的扩展ASCII编码,包含你期望的特殊符号(如制表符、方框、希腊字母等)。如果不修改编码,Windows控制台会用当前系统的默认编码(比如中文系统的GBK)解析这些字节,自然会显示乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:18:38