VS2017控制台程序显示中文为乱码的问题解决办法

18111 人浏览 | 时间: 2017-10-05 19:53:47 | 作者: codexia

        今天会员【HiroLCS】提到一个问题,就是在VS2017新建的C/C++控制台程序显示的中文竟然是乱码,效果图如下:

    VS2017控制台程序显示中文为乱码的问题解决办法

        出现乱码,必然是编码问题。而编码问题就要考虑到多方面的因素,大致分为:文件编码、代码编码、输出结果显示的编码。我们只要以此来检查这三部分,就可以找到乱码的原因。而要想不出现乱码,那么这三部分都需要正确,其中一部分的编码并没有对错之分,编码和解码一致才是正确的。

    1.文件编码

        将cpp文件使用Notepad++软件打开,然后底部状态栏的右边可以看到当前文件的编码。我们可以看到,我们在VS2017里创建的cpp文件,是UTF-8编码。

    2.代码编码

        代码编码指的是在VS项目中,我们在项目属性里指定的字符集,如下图所示:

    VS2017控制台程序显示中文为乱码的问题解决办法

        我们可以看到,VS项目里使用的字符集是Unicode编码。这个编码是对代码中出现的字符串默认使用的编码。所以你看到标题上是项目默认值。如果你在字符串里显式(刻意)指定字符串编码方式,如L"这就是Unicode编码字符串",因为左边有一个大写的字母L。或者使用printf这样的ASCII版本字符串的函数,就只能是ASCII编码。我们一般说的是ANSI编码,ANSI编码就做内码,意思是系统内部使用的编码,会自动将你这些字符串编码为系统默认使用的字符集,我们一般都是GB2312,因为我们是中国。如果我们直接说是ASCII编码,也就是VS2017里对应的多字节字符集。

        如果你在代码中直接写双引号,然后也不管字符集这些,再没有特地指定编码的函数里,系统会自动使用默认的编码字符集来编码字符串,也就是你上面看到的项目属性里的【使用Unicode字符集】。

        如果我们直接创建一个项目,然后输入中文,然后就显示了乱码。自然这个和代码的编码无关。不管你用哪种字符集,都会出现乱码。代码编码乱码一般出现在字符编码转换时出现。

    3.显示编码(解码)

        当控制台程序运行的时候,结果输出在控制台黑窗口中。此时我们才看得到输出的结果。如果确定控制台显示使用的编码呢?我们启动控制台程序,然后在控制台的标题栏里右击,选择“属性”,如下图:

    VS2017控制台程序显示中文为乱码的问题解决办法

        然后弹出一个对话框,如下图所示:

    VS2017控制台程序显示中文为乱码的问题解决办法

请微信扫码阅读
为防止恶意爬虫,
已开启反爬机制

相关阅读