广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    Windows下控制台应用程序乱码解决方案

    来源:网络收集  点击:  时间:2024-04-03
    【导读】:
    我们在用各种IDE编写纯C++或者C代码的控制台应用程序时,经常会遇到中文显示为乱码的问题,搞得在调试时非常的不方便,一时半会解决不了的话只能在代码中用英文来代替了。那么怎么样才能解决这个乱码的问题呢?工具/原料moreQtCreator集成开发环境方法一/步骤1/9分步阅读

    首先,我们要明白乱码的原因。原因肯定是编码与解码不一致导致的,我们先来看看编码与解码的情况。

    打开命令提示符窗口,在标题栏上右键,属性。

    2/9

    在打开的属性窗口中,选择选项标签页,可以看到当前代码页组框中有“936 (ANSI/OEM -简体中文 GBK)”的字样,很明显命令提示符的解码方式是GBK。

    3/9

    再来看看源代码main.cpp的编码。可以在记事本的另存为对话框中看到,编码是UTF-8的方式。而且我的QtCreator的默认解码方式也是UTF-8,所以能够正确解码,否则源代码也会是乱码。

    4/9

    来看看编译运行的情况。源代码中的“你好,C++!”已经变成火星文了,不知道怎么打火星文的童鞋有福了。

    5/9

    既然是编码的问题,当然从编码入手了。我们把源代码的编码方式改了不就行了。

    用记事本打开main.cpp,然后打开另存为对话框,对话框的下方的编码我们选择ANSI。然后确定覆盖原来的main.cpp。

    6/9

    这时候我们的QtCreator不乐意了,弹出了个对话框。

    意思是,源代码在外部被改写,要不要重新载入,选择Yes to All。

    7/9

    这时候又出现问题了,窗体顶部弹出个条,提示我们无法用UTF-8解码main.cpp。当然不能用UTF-8了,因为我们把它转换成了ANSI。而且,源代码中的汉字也变成了一团不知道是啥的东西。

    8/9

    点击那个条上的 Select Encoding 。我们选择GBK那行,然后点击按编码重新载入。之后一切又都好了。

    9/9

    再运行下看看。

    好了,运行正常。对于强迫症者来说,感觉呼吸都轻松多了。

    方法二/步骤1/4

    一个项目可能有很多文件,那么每一个都这么改还真的是很麻烦。有没有更简单的方法呢?这就是我们的方法二。实际上CMD有个命令chcp可以修改命令提示符的解码方式。我们来试试看。

    打开一个命令提示符窗口,输入chcp 65001。65001就是UTF-8。

    2/4

    可以看到,命令提示符确实是变成了UTF-8。

    好的,我们把源代码用记事本再次的转换为UTF-8,然后再运行看看情况。

    可是我们发现,我们的程序依然是乱码。而且,程序窗口的解码方式并没有变。这可如何是好。

    3/4

    没关系,不知道你知不知道C语言有个库叫stdlib.h的,可以通过system()函数调用各命令的。那我们就在程序运行的时候调用命令来改解码方式。

    代码如下:

    #include iostream

    #include cstdlibusing namespace std;int main()

    {

    system(chcp 65001);

    system(cls);

    cout你好,C++!endl;

    return 0;

    }

    我们来看看运行情况

    4/4

    已经可以看到正常的汉字了,除了“你”没有显示以外,其他的看起来都还不错。

    注意:如果你的仍然是乱码。你可以试着在命令提示的属性窗口中,字体标签页,将字体改为 Lucida console,然后再试试。

    至于为什么“你”字没法正常显示,我猜测是因为BOM的问题。先不管这个问题了,我们在“你”前面加几个空格就行了。

    再来运行看看。

    好了,问题解决了。空气又变的清新了。

    方法三/步骤1/3

    虽然,加两行代码能解决问题,而且也方便了很多。但是无缘无故加两行代码,对于强迫症来说是有点难受的。而且据说system()无法跨平台使用,这个也是不太好的。

    我们来看看终极大杀器,一劳永逸解决问题。

    修改注册表配置。

    打开注册表,找到路径:HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe

    将右侧的CodePage的值修改为65001。我们甚至可以改字体的大小。

    2/3

    有童鞋可能看到了另一个注册表项,而且看起来很熟悉,我们也顺便把它的值改一改吧。

    3/3

    我们将

    system(chcp 65001);

    system(cls);

    这两行代码注释掉,然后再运行代码看看。

    没有问题了。

    我以后都没有问题了,耶!

    注意事项

    关于字符编码是个很复杂的问题,感兴趣的童鞋可以研究研究

    控制台乱码QT
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_415529.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 01:07:19  耗时:0.023
    0.0234s