在CodeBlocks中打印≠等特殊字符失败的技术求助
解决CodeBlocks终端无法正确打印Unicode字符(≠)及葡萄牙语文本乱码的问题
问题根源
Windows 10下CodeBlocks自带的MinGW终端,默认编码环境与CMD不一致,即便代码中调用setlocale(LC_ALL,""),终端本身未匹配UTF-8编码规则,导致字符输出乱码或不显示。
解决方案
方案1:修改CodeBlocks终端编码为UTF-8
- 打开CodeBlocks,点击顶部菜单栏
Settings->Editor... - 在弹出窗口中选择
General settings->Other settings->Encoding,设置为UTF-8,勾选Default encoding for new files后点击OK - 再次点击
Settings->Environment...,在General settings的Terminal to launch console programs栏,将默认值修改为cmd.exe /c chcp 65001 &&,启动终端时自动切换到UTF-8编码(65001为UTF-8代码页)
方案2:调整代码适配终端编码
若不想修改IDE设置,可通过代码强制匹配编码:
#include <stdio.h> #include <locale.h> #include <wchar.h> int main(){ // 明确指定葡萄牙语UTF-8 locale(巴西葡语用"Portuguese_Brazil.65001",葡葡用"Portuguese_Portugal.65001") setlocale(LC_ALL, "Portuguese_Brazil.65001"); // 用wprintf输出宽字符 wprintf(L"%lc\n", (wchar_t)0x2260); // 或直接打印≠的UTF-8字节序列(无需依赖locale) printf("\xE2\x89\xA0\n"); return 0; }
方案3:替换终端为CMD
- 打开
Settings->Environment... - 将
Terminal to launch console programs的命令替换为cmd.exe /k,程序运行时直接在CMD窗口启动(你的代码原本在CMD中可正常运行)
验证
修改设置或代码后重新编译运行,检查≠字符及葡萄牙语文本是否正常显示。
内容的提问来源于stack exchange,提问作者Thiaguinhu123
相关产品推荐
相关产品推荐

