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

知识产权协议

允许以教育/培训为目的向学生或受众进行免费引用,展示或者讲述,无须取得作者同意。

不允许以电子/纸质出版为目的进行摘抄或改编。

1. 开发环境

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

2. 故障现象

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

程序如下:

//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;
}

其执行结果包含乱码:

乱码黑方块字符_中文文字无线乱码,0,2,2,51 51 51 2 2 2 2,46320,1.36,中文无线乱码(wifi名称乱码方块问号?)-路由网,https://www.luyouwang.net/8048._方框问号乱码

3. 解决方案

选择工具->选项菜单

乱码黑方块字符_中文文字无线乱码,0,2,2,51 51 51 2 2 2 2,46320,1.36,中文无线乱码(wifi名称乱码方块问号?)-路由网,https://www.luyouwang.net/8048._方框问号乱码

在文本编辑器-显示中勾选 file

方框问号乱码_中文文字无线乱码,0,2,2,51 51 51 2 2 2 2,46320,1.36,中文无线乱码(wifi名称乱码方块问号?)-路由网,https://www.luyouwang.net/8048._乱码黑方块字符

右上角点UTF-8中文文字无线乱码,0,2,2,51 51 51 2 2 2 2,46320,1.36,中文无线乱码(wifi名称乱码方块问号?)-路由网,https://www.luyouwang.net/8048.,弹出的对话框中选择,选“按编码保存”。

方框问号乱码_乱码黑方块字符_中文文字无线乱码,0,2,2,51 51 51 2 2 2 2,46320,1.36,中文无线乱码(wifi名称乱码方块问号?)-路由网,https://www.luyouwang.net/8048.

保存之后,右上角显示的当前编码变为.

乱码黑方块字符_中文文字无线乱码,0,2,2,51 51 51 2 2 2 2,46320,1.36,中文无线乱码(wifi名称乱码方块问号?)-路由网,https://www.luyouwang.net/8048._方框问号乱码


娜娜项目网每日更新创业和副业项目

网址:nanaxm.cn 点击前往娜娜项目网

站 长 微 信: nanadh666


再次编译执行,问题解决。

方框问号乱码_乱码黑方块字符_中文文字无线乱码,0,2,2,51 51 51 2 2 2 2,46320,1.36,中文无线乱码(wifi名称乱码方块问号?)-路由网,https://www.luyouwang.net/8048.

4. 后记

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

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

通过将整体开发环境的文件编码设置为,或可解决问题。但作者不推荐这么做, 因为事实上,UTF-8是更通用的编码,它允许在同一个应用程序里同时显示多国文字。

乱码黑方块字符_方框问号乱码_中文文字无线乱码,0,2,2,51 51 51 2 2 2 2,46320,1.36,中文无线乱码(wifi名称乱码方块问号?)-路由网,https://www.luyouwang.net/8048.

本案例节选自作者编写的教材及配套实验指导书。

《C++编程基础及应用》(高等教育出版社,出版过程中)

《编程基础及应用》,高等教育出版社

《编程基础及应用实验教程》,高等教育出版社

乱码黑方块字符_方框问号乱码_中文文字无线乱码,0,2,2,51 51 51 2 2 2 2,46320,1.36,中文无线乱码(wifi名称乱码方块问号?)-路由网,https://www.luyouwang.net/8048.

高校教师同行如果期望索取样书,教学支持资料,加群中文文字无线乱码,0,2,2,51 51 51 2 2 2 2,46320,1.36,中文无线乱码(wifi名称乱码方块问号?)-路由网,https://www.luyouwang.net/8048.,请私信作者,联系时请提供学校及个人姓名为盼,各高校在读学生勿扰为谢。

青少年读者们如果期望系统性地学习及C/C++程序设计语言,欢迎尝试下述今日头条(西瓜)免费视频课程。

C/C++从入门到放弃(重庆大学现场版)

编程基础及应用(重庆大学现场版)

中文文字无线乱码,0,2,2,51 51 51 2 2 2 2,46320,1.36,中文无线乱码(wifi名称乱码方块问号?)-路由网,https://www.luyouwang.net/8048._方框问号乱码_乱码黑方块字符


娜娜项目网每日更新创业和副业项目

网址:nanaxm.cn 点击前往娜娜项目网

站 长 微 信: nanadh666

声明: 本站内容转载于网络,版权归原作者所有,仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任,若侵犯到你的版权利益,请联系我们,会尽快删除处理!