• Windows环境下Qt Creator控制台输出中文乱码解决方法


    中文讨论Windows环境下Qt Creator控制台输出中文乱码的解决办法。

    本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载,但需要注明原作者"海洋饼干叔
    叔";本文不允许以纸质及电子出版为目的进行抄摘或改编。
    1.《Python编程基础及应用》,陈波,刘慧君,高等教育出版社。免费授课视频 Python编程基础及应用
    2.《Python编程基础及应用实验教程》, 陈波,熊心志,张全和,刘慧君,赵恒军,高等教育出版社Python编程基础及应用实验教程
    3. 《简明C及C++语言教程》,陈波,待出版书稿。免费授课视频

    1. 开发环境

    中文Windows 10 64bit, Qt Creator 4.11.0, mingw 7.3.0 64 bit

    2. 故障现象

    Plain C/C++ Application在控制台输出中文时出现乱码。

    程序如下:

    //Project - EarthTime
    #include 
    #include 
    
    int main() {
        time_t t;
        time(&t); //获取当前时间,从1970年1月1日零时起经过的秒数
    
        long long totalSeconds = (long long)t;      //总秒数转换为long long类型
        long long curSecond = totalSeconds % 60;    //当前秒数 = 总秒数对60取余
        long long totalMinutes = totalSeconds / 60; //总分钟 = 总秒数除60
        long long curMinute = totalMinutes % 60;    //当前分钟 = 总分钟对60取余
        long long totalHours = totalMinutes / 60;   //总小时 = 总分钟除60
        long long curHour = totalHours % 24;        //当前小时 = 总小时对24取余
    
        printf("格林尼治时间 %lld 时 %lld 分 %lld 秒,1970年1月1日零时到现在经过了 %lld 秒.",
               curHour,curMinute,curSecond,totalSeconds);
    
        /* printf的英文版本
        printf("%lld:%lld:%lld, %lld seconds after 1970/1/1 00:00::00",
               curHour,curMinute,curSecond,totalSeconds);
        */
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    其执行结果包含乱码:
    在这里插入图片描述

    3. 解决方案images

    选择工具->选项菜单
    在这里插入图片描述
    在文本编辑器-显示中勾选 Display file encoding
    在这里插入图片描述
    右上角点UTF-8,弹出的对话框中选择System,选“按编码保存”。
    在这里插入图片描述
    保存之后,右上角显示的当前编码变为System.
    在这里插入图片描述
    再次编译执行,问题解决。
    在这里插入图片描述

    4. 后记

    问题事实上没有完全解决,下次再打开项目时,Qt Creator会以UTF-8读入事实上由System编码的文件,连源代码都会出现乱码。此时,可以通过按System编码读入来解决。

    请读者不必纠正,大多数的应用开发,都是图形界面,控制台应用极少,控制台里还要使用中文的应用就更少了。

    通过将整体开发环境的文件编码设置为System,或可解决问题。但作者不推荐这么做, 因为事实上,UTF-8是更通用的编码,它允许在同一个应用程序里同时显示多国文字。
    在这里插入图片描述
    为了帮助更多的年轻朋友们学好编程,作者在B站上开了两门免费的网课,一门零基础讲Python,一门零基础C和C++一起学,拿走不谢!

    简洁的C及C++
    由编程界擅长教书,教书界特能编程的海洋饼干叔叔打造
    Python编程基础及应用
    由编程界擅长教书,教书界特能编程的海洋饼干叔叔打造

    如果你觉得纸质书看起来更顺手,目前Python有两本,C和C++在出版过程中。

    Python编程基础及应用

    Python编程基础及应用实验教程
    在这里插入图片描述

  • 相关阅读:
    第2关:创建表
    24.第12届蓝桥杯省赛真题题解
    怎样选择合适的CRM客户管理系统?
    HID 异步访问和同步访问
    Redis的集群方案
    untitle
    通过Redis实现一个异步请求-响应程序
    【二十】分割Segmentation_Threshold——binary_threhold()算子
    开发者举报:“除了每年收我的钱,苹果似乎什么都不想做”
    飞桨大模型套件:一站式体验,性能极致,生态兼容
  • 原文地址:https://blog.csdn.net/SeaBiscuitUncle/article/details/126595668