Qt 应用程序输出中文乱码+UI界面输出中文乱码

本文的主要解决方法来自于博客(Qt与MSVC中文乱码问题的解决方案_liuweilhy的博客-CSDN博客),特此鸣谢。

1.背景

今天心血来潮,将Qt编译器改为msvc 2019 64,应用程序中qdebug输出和界面输出的中文均出现乱码,而以前在用mingw编译器的时候,没有出现这种情况。

 2、解决方法

出现问题,作为一个小白,自然是网上搜索,阅读了很多帖子,发现解决方案主要有以下几种:

  • (1)设置编码文件的编码为utf-8,且加入bom

  • (2)添加QMAKE_CXXFLAGS += /utf-8到您的.pro文件中
  • (3)在main函数中加入
    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForLocale(codec);

以上方法均尝试,在满足(1)的条件下,均无效。程序依然如故。

最后找到一个博客(Qt与MSVC中文乱码问题的解决方案_liuweilhy的博客-CSDN博客),最终解决了问题,为了便于以后查阅,特摘录部分

1. Qt Creator的编辑器默认使用UTF-8(代码页65001)编码来读取文本文件。而Visual Studio保存文件时默认采用的是本地编码,对于简体中文的Windows操作系统,这个编码就是GB2312(代码页936)。如果使用Qt Creator读取由Visual Studio创建的文件,那么编辑器就会以UTF-8编码格式读取GB2312编码格式的文件,出现中文乱码,因为这两套编码系统对汉字编码是不同的。至于英文部分不会乱码,是因为UTF-8和GB2312在单字节字符部分是兼容的。

2. MSVC在编译时,会根据源代码文件有无BOM来定义源码字符集。如果有BOM,则按BOM解释识别编码;如果没有,则使用本地字符集,对于简体中文的Windows操作系统就是GB2312。那么,当MSVC遇到一个没有BOM的UTF-8编码的文件时,它通常会把文件看作GB2312的来处理。如果文件全是英文没有问题,但如果包含中文,编译器就会出现误读。这种情况下,Qt Creator编辑器是正常的。但对于MSVC编译器,原代码会被它认识成下图这个样子:

不过,当以无BOM的UTF-8编码的字符串正好凑够偶数个字节时(比如偶数个汉字,或奇数个汉字加奇数个英文字母),编译器通常不会报警,因为它以为用GB2312编码读出的是正确的。

3. 不管源文件是何种编码,只要MSVC能够正确识别,就可以通过编译。但MSVC的执行字符集默认是本地字符集。对我们来说,它生成的可执行文件中的文字是GB2312编码的。而生成的Qt程序以UTF-8编码来识别GB2312编码的文字,对于“你好中文!”这几个字符,采用GB2312编码后再以UFT-8编码来读取,就会变成如下的乱码:

当以无BOM的UTF-8编码的字符串正好凑够偶数个字节时(比如偶数个汉字,或奇数个汉字加奇数个英文字母),反而不会出现乱码。那是因为,编译器用GB2312编码读出的乱码本身就是UTF-8编码的,现在又用UTF-8解读,自然就正确了。这纯粹是歪打正着。

首先,你要确定采用哪种源码字符集。你有两个选择:

1. 采用本地编码字符集(不推荐,跨平台时会比较麻烦,但在Visual Studio环境下配合Add-in工具编程比较方便);

2. 采用UTF-8编码字符集(推荐,适合跨平台)。

第二种方案的解决方法:

首先,要把项目中所有的头文件和源文件全都转换成UTF-8+BOM编码保存。

1. 第1个问题不存在了。

2. 第2个问题也不存在了。

3. 第3个问题,你也可以用上个方案中的方法来解决,但有更好的方法。那就是要用到中文字符的头文件和源文件开头加上MSVC的一个宏:

#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
这个宏告诉MSVC,执行字符集是UTF-8编码的,别瞎整成GB2312的!还有个好处,就是能用tr包中文,方便日后的翻译

添加后,解决问题。

3 进一步探究

在尝试的过程中,我也尝试了刘典武大神的方法,在head.h中加入

#pragma execution_character_set("utf-8")

在出现中文的代码文件中,加入该头文件的引用,依然可以解决问题。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/59998.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

原创 | 一文读懂强化学习在动态规划领域的应用

作者:黄娘球本文约1600字,建议阅读5分钟 本文澄清易混淆基础概念、推导公式为主,回顾强化学习基础知识。 ChatGPT已成为继AlphaGo之后的社会现象级人工智能,引发了大模型研究的热潮。戴琼海院士提出,五年后大模型将成为…

LLM推理提速2.8倍,CMU提出投机式推理引擎,小模型撬动大模型高效推理

©作者 | 机器之心编辑部 来源 | 机器之心 近日,来自卡耐基梅隆大学(CMU)的 Catalyst Group 团队发布了一款「投机式推理」引擎 SpecInfer,可以借助轻量化的小模型来帮助大模型,在完全不影响生成内容准确度的情况下…

Python爬虫爬取各大热门短视频平台视频

1、开发工具 Python3.9 requests库 其他一些Python内置库 pycharm 2、第三方库 安装第三方库 pip install requests 3、实现思路 1、利用tkinter库实例化一个GUI界面,包含提示框、输入框、选择按钮、功能按钮。 2、用requests发送get请求,获得下…

短视频素材:17个视频网站,涨粉必上热门

2022年来了,加入短视频大军的人越来越多,但视频素材,视频制作一直是个门槛。 今天就给大家分享17个短视频素材网站! 1、Coverr:(https://coverr.co) 很好很强大的免费视频素材网站&#xff0c…

CnOpenData短视频播主排名数据

一、数据简介 短视频即短片视频,是一种互联网内容传播方式,一般是指在互联网新媒体上传播的时长在5分钟以内的视频。随着网红经济的出现,视频行业逐渐崛起一批优质UGC内容制作者,微博、秒拍、快手、今日头条纷纷入局短视频行业&am…

短视频App对比分析报告

行业发展环境及现状对比 市场特点 优点: 短视频内容生产门槛低,内容产量大。 内容形式直观,信息携带量大,体量小巧。短视频信息量大,在流量及时间上消耗低,使用方式/场景灵活,符合移动互…

今年最火的APP,你更喜欢哪一个?#2019短视频APP排行榜#

用流量看视频已经不再是一种奢侈行为,并且人们更愿意自拍视频分享自己的生活来博取大众一笑,而短视频app就给了所有人一个展示的机会,你可以在上面自拍,也可以看别人分享的视频,那么如今最火的短视频app是哪个?短视频app哪个好呢?来看看榜单吧! 2019短视频APP排行榜 …

2023 ICCAD Contest Problem C ML for IR drop 赛题解析

文章目录 问题简述问题背景问题描述与目标评估指标 以往工作PowerNet: Transferable Dynamic IR Drop Estimation via Maximum Convolutional Neural NetworkThermal and IR Drop Analysis Using Convolutional Encoder-Decoder Networks(EDGe)BeGAN: Power Grid Benchmark Gen…

In-Context Learning开卷视觉任务,DeepMind提出快速适应新任务的“蜂鸟”模型

​ 论文链接:https://arxiv.org/abs/2306.01667 近来,随着ChatGPT和GPT-4等大模型的火热,使得学术界开始更多的关注于大模型背后的一些关键新技术,例如与ChatGPT高度相关的In-Context Learning(情景学习,也…

怎样找一张图片的原图、出处?最全搜图网站+具体案例分享

前不久随手帮一网友找了张图,想了想中间的经历挺有意思,所以今天打算来说说以图搜图这个话题 第一部分,先介绍常用的识图引擎第二部分,想分享一下阿虚自己的搜图经验,也是今天主要想分享的。 ▍1 首先推荐几个识图引…

这几个免费、商用图片素材网,你一定要知道。

很多朋友不知道去哪里找图片素材,找到了又担心会不会侵权。 今天给大家分享6个免费可商用图片素材网站,这下再也不用担心找不到素材或侵权啦! 1、菜鸟图库 传送门:https://www.sucai999.com/pic.html?vNTYxMjky 网站素材资源量…

6个高清图片素材网站,找图片素材就靠他们了

6个高质量图片素材网站,建议收藏! 1、菜鸟图库 https://www.sucai999.com/?vNTYwNDUx 菜鸟图库虽然是一个设计网站,但素材库非常大,除了有设计类素材之外还有很多视频、音频、办公类等素材,图片素材就有好几十万张&a…

8个免费图片素材网,赶紧收藏起来

现在图片素材变得越来越重要了,除了平常设计经常要用到图片之外,大到平常文章、自媒体、视频制作配图,小到我们发朋友圈、日志、说说,都会用到图片来衬托。 但图片版权一直是设计师、自媒体和各大企业的一大难题。 要不就花钱买…

找高清图片素材,这8个网站就够了

相信很多设计师、自媒体都为找素材而烦恼,很多朋友不知道去哪里找图片素材,找到了版权还不明确,怕造成侵权,今天我就把我独家珍藏的8个图片素材网站分享给大家,免费下载,还可以商用,建议收藏起来…

股票web下单接口能查询到股票GIF分时走势图吗?

股票web下单接口可以通过使用getStockImageByteByCode来获取股票GIF分时走势图,那么运用该系统来获得中国股票GIF分时走势图字节数组为: INput:theStockCode 股票代号,如:sh000001 POST /WebServices/ChinaStockWebSe…

四大派围攻光明顶360摊上大事了

这一次360摊上大事了,这事与以往任何一次战争都不相同。 2月26日,《每日经济新闻》用四个整版的篇幅,推出了重磅调查报告《360黑匣子之谜--奇虎360“癌”性基因大揭秘》,一时震动行业。当天下午3点,360通过新浪微博安全…

第一个简单Python爬虫:抓取古诗文网中李白的诗歌

2018年10月11日 这是第一个博客,嘻嘻~~~~ 最近老师给了个任务:爬取诗歌。于是乎,走上了爬虫道路,爬取了李白的诗歌。 感谢代码的原作者(唐诗三百首,源代码)。 遇到的问题与收获:…

如何开通阿里云语音通知服务?

阿里云语音服务是阿里云为用户提供的一种通信服务的能力。支持快速发送语音通知服务。 安全级别更高,难窃取。支持大容量、高并发,稳定可靠。 一、如何开通阿里云语音服务? 注册阿里云平台账户;实名登记认证;阿里云语…

Android语音识别-阿里语音识别

实例代码先行 AutomaticSpeechRecognition 一、申请语音识别API(可忽略,代码中有我自己的) 在阿里智能语音识别网页申请自己的AccessKey,secret。 二、用Android Studio创建项目 可以从git clone下载用下我的 git clone https…

阿里语音识别看这一篇就够了

先看效果 效果视频 首先到阿里页面创建项目 传送门:https://help.aliyun.com/document_detail/71936.htm?spma2c4g.11186623.0.0.12a03787uqgGAh#2572188 下载sdk引入到项目并且依赖 传送门:https://gw.alipayobjects.com/os/bmw-prod/d5d24de6-599d-41ac-aad7-3bfa6fc38f4…