Windows10+MinGW环境下C++正确显示法语特殊字符求助
解决Windows终端下MinGW编译C++显示法语特殊字符乱码问题
问题核心是编码不匹配:Windows终端默认使用GBK(代码页CP936),而你的源代码大概率以UTF-8格式保存,MinGW默认会将字符串转换为Windows本地编码,导致特殊字符显示错乱。以下是无需编码转义的解决方案:
方案1:手动切换终端编码+编译指定输出编码
- 打开终端后,先执行命令切换到UTF-8编码:
chcp 65001 - 编译代码时,添加参数指定程序输出UTF-8编码:
g++ your_code.cpp -o output.exe -fexec-charset=UTF-8 - 运行编译后的
output.exe,即可正确显示J'aime le café。
方案2:程序内自动设置终端编码
通过Windows API强制终端切换到UTF-8编码,无需手动输入命令:
#include <iostream> #include <windows.h> using namespace std; int main() { // 设置控制台输出编码为UTF-8 SetConsoleOutputCP(CP_UTF8); printf("J'aime le café"); return 0; }
编译时同样需要添加-fexec-charset=UTF-8参数,确保程序字符串以UTF-8输出。
注意事项
- 确保源代码文件以UTF-8无BOM格式保存(大部分编辑器都支持设置,比如VS Code、Notepad++)。
- 避免用GBK格式保存代码,否则跨平台或切换终端编码时会再次出现乱码问题。
内容的提问来源于stack exchange,提问作者BatteTarte
相关产品推荐
相关产品推荐

