C++程序里的中文无论怎么调整,运行后永远显示乱码,反复切换文件编码也解决不了问题。这类问题不是单一文件编码错误,是源码、编译器、运行环境三者的编码不统一导致的。

1. 统一源码文件编码
把所有源码文件统一保存为UTF-8无BOM格式。
不要混用GBK、UTF-8等多种编码格式,从根源避免不同文件里的中文字符本身就存在编码冲突。
2. 添加编译编码参数
在MSVC编译器里添加/utf-8编译选项,GCC里添加-finput-charset=UTF-8。
强制让编译器以指定编码读取源码,不会自动按系统默认编码解析中文字符,避免编译阶段就把中文转成乱码。
3. 控制台输出编码对齐
运行时先调用系统API把控制台代码页设置为65001。
让控制台的输出编码和程序内部的字符串编码完全匹配,不会出现编码转换错位导致的乱码。
4. 用宽字符串标记中文
涉及中文的字符串前加L前缀,用std::wstring存储。
避免多字节编码在不同系统间的自动转换歧义,跨平台运行时中文也能正常显示,不会出现随机乱码。
本文凡亿教育原创文章,转载请注明来源!

扫码关注










































