2021年最整最强决CLion MinGW64中文乱码问题
在CLion中使用MinGW64开发时,中文乱码是常见问题,根源多为编码不统一。以下是经过验证的整决方案,覆盖文件编码、编译配置、终端设置等关键环节,确保中文正常显示。一、统一CLion文件编码
打开CLion,进入`File > Settings > Editor > File Encodings`,将`Global Encoding`、`Project Encoding`、`Default encoding for properties files`全部设为`UTF-8`,并勾选`Transparent native-to-ascii conversion`。此步骤确保项目文件、配置文件均以UTF-8编码保存,避免源文件本身的编码混乱。二、配置CMake编译选项
在项目的`CMakeLists.txt`中添加编译参数,强制编译器处理UTF-8编码的源文件,并输出与终端匹配的符集。具体添加: `add_compile_options(-finput-charset=UTF-8 -fexec-charset=GBK)`- `-finput-charset=UTF-8`:指定源文件编码为UTF-8,确保编译器正确析中文代码;
- `-fexec-charset=GBK`:设置可执行文件输出符串编码为GBKWindows终端默认编码,避免运行时符转码错误。
三、调整CLion终端编码
CLion内置终端默认继承系统编码,需手动切换为UTF-8。进入`Settings > Tools > Terminal`,在`Shell path`中添加参数:`cmd.exe /k chcp 65001`,其中`65001`为UTF-8代码页。此外,在终端右键选择`Settings`,将体设为支持UTF-8的`Consolas`或`微软雅黑`,避免因体缺失导致乱码。四、代码中设置Locale
在C/C++代码的`main`函数添加locale设置,确保运行时正确处理中文: `setlocale(LC_ALL, \"zh_CN.UTF-8\");` 若在Windows系统中效,可替换为`setlocale(LC_ALL, \"\");`自动获取系统locale,或`setlocale(LC_ALL, \"Chinese\");`,强制程序使用中文环境编码。五、验证MinGW64版本
确保使用支持UTF-8的MinGW64版本,推荐从[MinGW-w64官网](https://www.mingw-w64.org/)下载`x86_64-posix-seh`版本,旧版本可能存在编码支持缺陷。安装后在CLion中配置`File > Settings > Build, Execution, Deployment > Toolchains`,指定MinGW64路径,确保编译器路径正确。通过以上步骤,可彻底决CLion+MinGW64环境下的中文乱码问题:文件编码统一为UTF-8,编译参数适配终端编码,终端与代码运行时Locale协同,配合正确的工具链版本,实现中文输入、编译、输出全程正常显示。
