QT学习笔记-QT5.15 + MSVC编译套件时编译日志及运行日志日志乱码解决

0、基础环境

操作系统:Windows10专业版
QT版本:QT5.15.2
QtCreator版本:9.0.2
MSVC版本:MSVC 2019 64bit
C/C++编译器:Microsoft Visual C++ Compiler 17.1.32328.378(amd64)
调试器:Auto-detected CDB at C:\Program Files\Windows Kits\10\Debuggers\x64\cdb.exe

1、QtCreator中的基本设置

1.1 编辑->首选项->环境

在这里插入图片描述

1.2 编辑->首选项->文本编辑器

文件编码的设置都是采用的默认值UTF-8,如下图:
在这里插入图片描述
在这里插入图片描述

2、问题1:MSVC编译日志乱码问题解决

问题描述

当qt的项目采用MSVC构建套件对项目代码进行编译时,在QtCreator的编译输出窗口中显示的编译日志部分内容显示乱码,此处的乱码不一定是中文乱码,如下图:
在这里插入图片描述

解决方法

在编辑->首选项->构建套件(Kit)-》MSVC构建套件设置中勾选[Force UTF-8 MSVC compiler output],如下图:
在这里插入图片描述
然后点击应用或直接确定,在对项目代码执行重新构建操作,则编译输出中的编译日志已能正常显示没有乱码了,如下图:
在这里插入图片描述

3、问题2:MSVC构建套件编译后程序运行日志乱码问题

问题描述

在QtCreator中对程序进行调试运行时会在QtCreator的应用程序输出窗口(也可以认为是控制台)中显示程序中的qDebug()日志,这部分日志中的乱码通常是中文显示乱码。
代码实例:

if (!operateResult.isSuccess())
{
    qWarning() << "Name = " << this->getName() << ",建立与" << this->serverIp << ":" << this->serverPort << "的握手失败...";
    connectResult = false;
}
else
{
    this->errCnt = 0;
    this->state = 1;
    qDebug() << "Name = " << this->getName() << ",成功与" << this->serverIp << ":" << this->serverPort << "建立了连接...";
}

如下图:
在这里插入图片描述

解决方法

网上查阅的话通常会介绍3种方法:
1、第1种是通过代码增加处理编码格式的方法,个人认为这种方法最不可取,会导致原始代码中增加很多无用代码,即增加了工作量又降低了代码的可读性。
2、第2种方法还是修改代码,在头文件或者cpp源码文件的#include之后增加一行

#pragma execution_character_set("utf-8")   //实现在日志输出中解决中文乱码问题,测试有效

这种方法有效,个人还是不推荐,还是因为要修改源码,虽然只有一行。
3、第3种方法,个人强烈推荐的方法,就是在pro文件中增加如下代码。(亲测有效)

# 解决msvc构建套件下qtcreator控制台日志中文乱码问题
msvc {
    QMAKE_CFLAGS += /utf-8
    QMAKE_CXXFLAGS += /utf-8
}

注意写法: { 与 msvc要在一行,中间有一个空格,如需奥把 { 写到msvc的下一行是编译不过去的。

如下图:
在这里插入图片描述
然后重新构建后,运行日志中文显示正常,如下图:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: OpenSSL是一个开放源代码的软件库,提供了一系列的加密算法和安全通信协议的实现。OpenSSL 1.1.1是OpenSSL的一个版本,其编译好的lib库能让开发者在自己的应用程序中使用OpenSSL的功能。 编译好的lib库是指将源代码经过编译后生成的库文件,可以方便地在应用程序中直接引用。对于OpenSSL 1.1.1来说,编译好的lib库可以被用于开发各种基于加密的应用程序,比如网络通信、安全传输等。 使用OpenSSL 1.1.1编译好的lib库,开发者可以调用库中的函数和方法,实现各种加解密操作。例如,可以使用库中的函数生成密钥、加密数据、解密数据、进行数字签名等。同,OpenSSL 1.1.1还提供了各种加密算法的实现,如AES、RSA、SHA等,开发者可以根据自己的需求选择适合的算法来保护数据的安全性。 此外,OpenSSL 1.1.1还支持各种安全通信协议,如SSL(Secure Sockets Layer)和TLS(Transport Layer Security)。这意味着开发者可以使用OpenSSL 1.1.1编译好的lib库来开发安全的网络通信应用程序,保证数据在传输过程中的机密性和完整性。 总之,OpenSSL 1.1.1编译好的lib库是一个强大的工具,可供开发者使用来保护数据的安全性和进行安全通信。它的使用广泛,可以用于各种不同类型的应用程序开发,为应用程序提供强大的加密和安全功能。 ### 回答2: OpenSSL是一个开源的软件库,提供了用于通信安全的加密和解密功能。OpenSSL 1.1.1是最新版本的OpenSSL,具有许多新的功能和改进。如果你已经成功地编译好了OpenSSL 1.1.1版本的库,那么你可以获得以下几个好处。 首先,OpenSSL 1.1.1版本引入了TLS 1.3协议的支持。TLS 1.3是应用层与传输层安全协议中最新的版本,具有更高的安全性和更快的连接速度。通过编译好的OpenSSL 1.1.1库,你可以使用TLS 1.3协议来保护你的网络通信。 其次,OpenSSL 1.1.1还改进了对密码套件的选择和配置。你可以根据自己的需求,选择合适的密码套件来提供加密和解密功能。这些密码套件包括AES、ChaCha20、Poly1305等,可以提供不同级别的加密强度。 另外,OpenSSL 1.1.1还增加了安全性改进,修复了一些已知的安全漏洞。这意味着你可以更安全地使用OpenSSL库来保护你的数据和通信。 最后,编译好的OpenSSL 1.1.1库可以在各种平台和操作系统上使用,并与许多其他软件和应用程序进行集成。你可以将其用于开发网络安全产品、构建安全的服务器应用程序,或者用于测试和评估网络安全性能。 总之,如果你已经成功地编译了OpenSSL 1.1.1库,那么你可以获得更高安全性、更快连接速度和更灵活的配置选项。这是一个强大和可靠的软件库,可以帮助你保护你的数据和通信安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值