解决Jetbrains Clion和PyCharm等编辑器run窗口和VS2019运行c++中文编码问题,不修改文件编码为gbk的一劳永逸的方法

摘要

    最近在使用Clion编辑器写C++,发现run窗口输出中文出现乱码,切换到vs2019中也同样如此。

    网络上很多解决办法,比如:

  • 修改clion或pycharm的file encoding为utf-8然后把文件字符编码转为GBK。

    这种方法最常见,但我可以负责任地说,这种方法会坑死你,因为,你xx改了文件的字符编码为GBK,项目组那么多文件你给改成了GBK,对于整个项目会带来灾难性的后果。gbk编写的文件在别的电脑上转为utf-8后,你会看到成片成片的小问号,然后你就被开除了。

    显然这种方法治标不治本,我们的目的是让电脑去适应文件,而不是让文件适配我们的电脑。
    而我这里讲的方法,只需要修改我们的电脑和ide,不会修改代码文件的utf-8字符编码。

思路

    乱码的问题其实出现在cmd终端和jetbrains家的伪控制台上。cmd的默认编码为GBK,jetbrains自带伪终端run窗口字符编码也是GBK,知道了这一点,那么思路就很明了。

  • 修改cmd终端字符编码
  • 禁用jetbrains伪终端

修改cmd终端字符编码

    对于这个,网络上也有很多操作,最著名且最没用的,就是在cmd输入命令:chcp 65001
    这种做法,俩字,呵呵!
    你只改变了当前终端,没改全局啊,cmd关了就回去了。

正确做法:

  • 打开注册表编辑器(运行–>regedit),定位到如图路径:
    解决Jetbrains Clion和PyCharm等编辑器run窗口和VS2019运行c++中文编码问题,不修改文件编码为gbk的一劳永逸的方法
    用到的就是Console下的蓝色框框那个,右侧有个CodePage的键,没有的话就新建一个这个名的DWORD(32位)值,双击修改,如下图:
    解决Jetbrains Clion和PyCharm等编辑器run窗口和VS2019运行c++中文编码问题,不修改文件编码为gbk的一劳永逸的方法
    先选择基数里的十进制,然后左侧值改为65001。确定,关闭注册表编辑器,重启或注销计算机。

  • 检查
    重启或者注销回来之后,打开cmd,输入chcp,返回65001,就对了
    解决Jetbrains Clion和PyCharm等编辑器run窗口和VS2019运行c++中文编码问题,不修改文件编码为gbk的一劳永逸的方法
    这个时候cmd的字符编码就改好了。

  • 检查vs2019
        这时候在vs里运行一段带有输出中文的程序,神奇的事情发生了!!!还是乱码,是不是很惊喜!很意外!!是不是觉得我在骗人哈哈哈!

        愚蠢的人类!!

解决:
    打开电脑控制面板,选择“时间和区域”下面的“更改日期、时间或数字格式”,打开的窗口选择管理,更改系统区域设置,打开的窗口选中“Beta版:xxxxxxxxxx”
解决Jetbrains Clion和PyCharm等编辑器run窗口和VS2019运行c++中文编码问题,不修改文件编码为gbk的一劳永逸的方法
确定,重启或注销电脑。
回来,打开vs2019,运行一段带有输出中文的c++代码,输出中文正常!

Clion等jetbrains编辑器修改

    cmd解决了,回到Clion,运行代码,gg了,还是乱码。

    原因:jetbrains有自家的终端,也就是run输出窗口,这个窗口是GBK的,脱离于操作系统。你在Terminal窗口输入chcp看看字符编码会发现这个Terminal窗口是utf-8的,因为terminal窗口就是系统的cmd。
    此时有“大佬”冒出来要改文件字符编码了哈哈哈哈哈,别再坑人了这些大佬们!

很简单:
快捷键:ctrl+shift+alt+/

选择,registry
弹出一个窗口,其实我还没发现这个窗口如何不通过快捷键打开,应该是只能通过快捷键。这个窗口涉及到jetbrains软件非常底层的设置,非专业人士指导请谨慎修改。
找到run.processes.with.pty,右方把对勾勾去掉,确定,重启clion/pycharm。
解决Jetbrains Clion和PyCharm等编辑器run窗口和VS2019运行c++中文编码问题,不修改文件编码为gbk的一劳永逸的方法

对于idea,这种java编辑器的run窗口跟clion和pycharm不太一样,一般不会出现中文乱码问题,这篇文章也不赘述了。