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

C语言打印å、ä、ö等特殊字符出现乱码如何解决?

C语言特殊字符打印乱码修复方案

你遇到的Ä打印变成õ的问题,本质是源码编码与运行时控制台编码不匹配导致的:Code::Blocks默认将源码保存为UTF-8编码,而Windows系统控制台默认使用OEM编码(西欧地区常用CP850,国内常用CP936/GBK),相同编码值在两套编码下对应不同字符,就会出现乱码。

修复步骤

  • 首先补全缺失的头文件:现有代码调用了strcmp函数但未引入<string.h>,先在头文件区域添加#include <string.h>,避免函数未定义的异常行为。
  • 方案1:修改Code::Blocks默认编码适配控制台
    1. 打开Code::Blocks,点击顶部菜单设置→编辑器→其他设置
    2. 点击配置编码,将默认编码改为对应地区的OEM编码:国内用户选择GBK/CP936,西欧用户选择CP850
    3. 保存设置后重新打开源码,把乱码的特殊字符重新输入一遍,重新编译运行即可
  • 方案2:修改控制台编码适配UTF-8源码(无需改动源码默认编码)
    在代码中新增Windows API调用,主动将控制台输入输出编码设为UTF-8,修改后完整代码如下:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    // Windows平台特有头文件,用于设置控制台编码
    #include <windows.h>
    
    int main (){
        // 把控制台输入输出编码都设为UTF-8
        SetConsoleOutputCP(CP_UTF8);
        SetConsoleCP(CP_UTF8);
    
        char name[20];
        printf("Enter first name: ");
        scanf("%s", name);
    
        if(strcmp(name, "Carl") == 0){
            printf("Carl är bra!");
        }
        else{
            printf("Kung!");
        }
        return 0;
    }
    
  • 额外说明:如果是在Linux/macOS环境运行,系统控制台默认就是UTF-8编码,仅需确认Code::Blocks的源码保存编码为UTF-8即可,无需额外修改配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:27:02