新春签到免费送会员,每天签到一次,送一天会员,活动截止时间不定,随时终止!机会不要错过哦!
首页  >   经验  >   VS2017控制台程序显示中文为乱码的问题解决办法

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

codexia 2017-10-05 19:53:47 8563
VS   2017   编码   乱码  
简介今天会员【HiroLCS】提到一个问题,就是在VS2017新建的C/C++控制台程序显示的中文竟然是乱码。编码问题不是一两句话说的清楚的,为了详细说清楚这个问题,特发此文章解释一番,图文并茂。

        今天会员【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控制台程序显示中文为乱码的问题解决办法

        可以看到,控制台使用的是GBK编码,即GB2312编码。找了一下,控制台这里没有修改显示编码的地方。

        检查一遍我们发现,文件编码是UTF-8,代码编码不影响,显示时解码用的是GBK编码。也就是说,存储到文件的字符是UTF-8编码,而我们控制台显示的编码是GBK,自然就是编码不对应,产生了乱码。

        解码的办法就是让保存文件的编码和显示的编码一致即可。前面发现控制台编码不能直接在属性里修改,修改起来不方便。那么我们来改变文件的编码咯。

        我们可以用Notepad++软件将cpp文件的编码修改为ASCII即可,这样就对应到了GBK编码。这样就没有乱码了。当然,VS里也有修改文件编码的功能。在VS2010等VS版本里,在文件菜单下,选中了文件之后,就可以看到高级保存选项,这里就可以修改文件的编码。然而在VS2017却故意去掉了,需要我们额外找出来。

        在“工具”->“自定义”->“命令”界面中,如下图所示:

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

        我们点击“保存选定项”,然后点击“添加命令”,弹出如下界面:

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

        我们在左边选择“文件”,然后在右边选择“高级保存选项(V)...”,确定即可。添加后是这样的:

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

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

        我们发现,文件菜单下的“高级保存选项”就出来了。我们可以用这个菜单项来修改代码文件的编码了,而不需要借助第三方编辑器了。我们打开我们要修改的cpp文件,然后点击“高级保存选项”,弹出如下界面:

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

        开始时显示的是Unicode编码,我们这里已经改为了GB2312编码了。然后确定即可。

        此时我们再编译代码,然后没有乱码了。如下图所示:

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

文章标题:VS2017控制台程序显示中文为乱码的问题解决办法
文章地址:http://www.cjjjs.com/article/2017105195331208
转载到个人博客,请在文末带上右侧内容(含超链接):本文转载自:VS2017控制台程序显示中文为乱码的问题解决办法
收藏 0 点赞 0

相关阅读

  1. C++ Primer Plus复习题3.6 第六题 找出编码88表示的字符
  2. C++ Primer Plus复习题3.6 第五题 下面两条C++语句是否等价
  3. VS2017编译警告MSB8027解决办法
  4. VS调试Linux时遇到加载符号模块的问题
  5. VS2017编译Linux项目时添加不常用的命令选项方法
  6. VS2017开发Linux程序时解决未定义的标识符问题办法
  7. VS2017提示警告suggest parentheses...
  8. VS2017的Linux项目编译和链接的相关说明
  9. VS2017编辑框设置背景图片方法分享
  10. VS2017控制台程序显示中文为乱码的问题解决办法
分享到:
分享文章[VS2017控制台程序显示中文为乱码的问题解决办法]到QQ空间

相关阅读