Windows下CLion中文乱码最有效的解决方式

作者开发环境
Windows 10
Clion 18.3
MinGW-W64
很多人都遇到了Clion的中文乱码问题,然后在CSDN上面寻找解决办法
比如这篇很有代表性https://blog.csdn.net/Cbk_XLL/article/details/78752534
这些方法都有弊端,就是还要把编辑页面的编码格式从UTF-8换成GBK编码
并且实际上严格来说这个方法是错误的,它是错错得正
文本是GBK然后编译器把它当成UTF-8然后又当成UTF-8输出在GBK的控制台
为啥要这么换呢?因为点击绿箭头运行过后输出结果是显示在RUN里面的
而这个RUN是根据系统默认编码(GBK)来显示中文的,所以要想正式显示中文
编辑的文本必须是GBK格式,可是按照上面的方式修改编码格式过后
每次打开CLion要想正确使用中文都要切换文本编码为GBK
于是我想到直接把系统编码改成万国码UTF-8
这样就不用这里GBK这里UTF-8的烦恼了
也就是说不用把当前文本编码改成GBK了
具体怎么换呢?请参考一下这篇文章
https://jingyan.baidu.com/article/25648fc1471e6a9191fd002e.html
这样在自己的电脑里面天下都是UTF-8了就不会有很多的烦恼了
但是我们难免要用到别人的东西
如果别人的东西是GBK编码导致我们这里乱码我们可以重新以GBK打开
但是上面的方法还有一个缺点,有的应用的中文文本就是以GBK编码的
所以更换系统编码格式还是有弊端的
那么有没有几乎没有弊端的方法呢?
有。在代码中加上头文件windows.h并且在程序开始时调用系统函数
system(“chcp 65001 > nul”);
这样就完美解决问题了
如果是在控制台乱码建议读者了解一下CHCP
还可以使用Win32控制台编程接口里面设置输入输出的编码格式
参考链接:https://docs.microsoft.com/en-us/windows/console/
另外我来说明一下为什么会乱码
g++在编译时默认输入编码和输出编码都是UTF-8
然后Windows操作系统默认字符集是GBK
IDE会自动指定实际CPP文件的文本编码但不会指定输出的文本编码
所以我们只需要在编译时为g++添加参数-fexec-charset=GBK即可
但是这个g++并不是我们手动调用的
在Clion里面我们需要在Cmakelist.txt文件里面添加一句话

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fexec-charset=GBK")

这样子问题就可以得到完美解决
另外如果读者始终解决不了乱码问题的话可以在下面留言找我解决
毕竟我跟乱码问题斗争了很久具有较丰富的经验

参考链接:https://blog.csdn.net/qq_28234213/article/details/73277748

你可能感兴趣的:(C++)