qt 中base64编码的gb2312转为utf8显示,乱码处理。其他编码通用...

本文介绍如何在Qt环境中使用Base64编码转换,包括从GB2312到UTF-8的编码转换过程,通过实例演示了如何利用Qt自带的编解码器进行编码转换,确保在控制台正确显示中文。

在网上找了很多,都不靠谱,把亲测的写在这里,希望能帮助大家。注意原理就是用unicode编码当媒介。
注意:qt的控制台默认显示的都是系统字符,我的是utf8,这个跟java不一样。所以必须都要转成utf8才能显示正常。

base64编码的原文:
发件人: xxxx发送时间: 2017-12-08 14:19收件人: xxxx主题: test

代码如下:

#include <iostream>
#include <QTextCodec>

using namespace std;

int main(int argc, char *argv[])
{
	//base64编码
	QByteArray abc = QByteArray::fromBase64("t6K8/sjLo7ogeHh4eLeiy83Ksbzko7ogMjAxNy0xMi0wOCAxNDoxOcrVvP7Iy6O6IHh4eHjW98zio7ogdGVzdA==");
    //qt自带的utf8编解码器
    QTextCodec* utf8Codec= QTextCodec::codecForName("utf-8");
    //qt自带的gb2312编解码器
    QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312");
    //将gb2312的base64编码转成unicode编码,也就是统一编码
    QString strUnicode= gb2312Codec->toUnicode(abc);
    //把统一编码转为utf8编码,统一编码在此做了中间媒介的作用。
    QByteArray ByteUtf8= utf8Codec->fromUnicode(strUnicode);
    //QByteArray转为QString
    QString result = QString(ByteUtf8);
    cout << result.toStdString() << endl;
    return 0;
}
下载代码方式:https://pan.quark.cn/s/0c576e76cc67 ### 处理网卡驱动无法移除的技巧 在日常的电脑维护过程中,我们常常需要更新或重新安装硬件驱动程序,尤其是网卡驱动程序。一般情况下,通过设备管理器进行卸载网卡驱动并重新安装即可解决大部分问题。然而,在某些特定情形下,用户可能会遭遇网卡驱动无法正常卸载的情况,这会对系统的稳定性和运行效率造成一定程度的不良影响。本文将系统性地阐述如何应对此类挑战,并提供一个较为周全且操作性强的解决方案。 #### 一、现象描述与原因探究 当用户试图在设备管理器中卸载网卡驱动程序,系统可能会弹出“Windows 无法移除此设备”或“设备正被系统占用”的提示信息,从而导致卸载操作无法顺利进行。在这种情况下,即便重新启动计算机,系统往往仍会自动恢复到原先的状态。此外,若尝试通过安全模式等其他途径进行卸载,通常也会遭遇类似的困境。 #### 二、解决方案详解 为有效应对上述问题,我们可以遵循以下步骤逐一尝试: **第一步:实施强制性卸载** 1. **进入DOS命令行界面或WINPE系统环境**:在某些场景中,通过DOS命令行工具或WINPE系统环境能够直接接触底层文件系统,从而规避部分权限限制。 2. **执行注册表项的手动删除**: - 启动注册表编辑器(`regedit`)。 - 定位至`HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\Network`路径,移除该路径下的所有子项。 - 类似地,前往`HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet002\\Control\\Network`路径,同样清除该目录下...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值