当前位置: 首页 > article >正文

Qt中文乱码解决

一、Qt代码文件格式设置为UTF8

1、std::cout乱码处理

    std::cout << QString::fromUtf8("你好").toLocal8Bit().data() << std::endl;

2、文件名称乱码处理

    QFile file(QString("你好.csv").toUtf8());

3、文件数据乱码处理

    //必须分两步转换

    QByteArray msgByteArray = QString::fromUtf8("你好,Qt:我爱你!__##").toLocal8Bit();

    const char* msg = msgByteArray.data();

    file.write(msg, strlen(msg));

保存的数据文件内容字符集格式为ANSI(Windows),CSV文件在Excel中打开需要使用ANSI字符集编码。

    //必须分两步转换

    QByteArray msgByteArray = QString::fromUtf8("你好,Qt:我爱你!__##").toUtf8();

    const char* msg = msgByteArray.data();

    file.write(msg, strlen(msg));

保存的数据文件内容字符集格式为UTF8。

完整代码

#include <iostream>
#include <QFile>
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    std::cout << QString::fromUtf8("你好").toLocal8Bit().data() << std::endl;
    QFile file(QString("你好.csv").toUtf8());
    file.open(QIODevice::WriteOnly | QIODevice::Text);
    //必须分两步转换
//    QByteArray msgByteArray = QString::fromUtf8("你好,Qt:我爱你!__##%1").arg(100).toUtf8();//文件数据编码格式UTF8
    QByteArray msgByteArray = QString::fromUtf8("你好,Qt:我爱你!__##%1").arg(100).toLocal8Bit();//文件数据编码格式ANSI(Windows)
    const char* msg = msgByteArray.data();
    file.write(msg, strlen(msg));
    file.close();
    return a.exec();
}

二、Qt代码文件格式设置为GBK

1、std::cout乱码处理

    std::cout << QString::fromLocal8Bit("你好").toLocal8Bit().data() << std::endl;

2、文件名称乱码处理

    QFile file(QString::fromLocal8Bit("你好.csv").toUtf8());

3、文件数据乱码处理

    //必须分两步转换

    QByteArray msgByteArray = QString::fromLocal8Bit("你好,Qt:我爱你!__##").toLocal8Bit();

    const char* msg = msgByteArray.data();

    file.write(msg, strlen(msg));

保存的数据文件内容字符集格式为ANSI(Windows),CSV文件在Excel中打开需要使用ANSI字符集编码。

    //必须分两步转换

    QByteArray msgByteArray = QString::fromLocal8Bit("你好,Qt:我爱你!__##").toUtf8();

    const char* msg = msgByteArray.data();

    file.write(msg, strlen(msg));

保存的数据文件内容字符集格式为UTF8。

完整代码

#include <iostream>
#include <QFile>
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    std::cout << QString::fromLocal8Bit("你好").toLocal8Bit().data() << std::endl;
    QFile file(QString::fromLocal8Bit("你好.csv").toUtf8());
    file.open(QIODevice::WriteOnly | QIODevice::Text);
    //必须分两步转换
//    QByteArray msgByteArray = QString::fromLocal8Bit("你好,Qt:我爱你!__##%1").arg(100).toUtf8();//文件数据编码格式UTF8
    QByteArray msgByteArray = QString::fromLocal8Bit("你好,Qt:我爱你!__##%1").arg(100).toLocal8Bit();//文件数据编码格式ANSI(Windows)
    const char* msg = msgByteArray.data();
    file.write(msg, strlen(msg));
    file.close();
    return a.exec();
}

http://www.kler.cn/a/312690.html

相关文章:

  • redis实现消息队列的几种方式
  • WorkFlow源码剖析——Communicator之TCPServer(下)
  • 今天给在家介绍一篇基于jsp的旅游网站设计与实现
  • 【ARM】MDK-烧录配置文件无权限访问
  • Spring学习笔记(四)
  • 【随机种子】Random Seed是什么?
  • 动手学深度学习(pytorch土堆)-06损失函数与反向传播、模型训练、GPU训练
  • 零基础玩转实在Agent -- 基础篇|实在Agent研究
  • 算法leecode笔记
  • 基于PHP的电脑线上销售系统
  • 小米电视,无需U盘,直接通过ADB远程安装APK,很方便!
  • 【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL16
  • 修改状态的标准模版
  • 【移动端】Flutter与uni-app:全方位对比分析
  • MATLAB绘图:2.plot函数
  • vulnhub靶场 DC-3
  • axios二次封装
  • web基础—dvwa靶场(十二)JavaScript Attacks
  • 从数据到资产:企业数据治理经济价值实现的策略框架
  • Dubbo SPI源码
  • Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解
  • 新媒体运营
  • 非守护线程会阻止JVM的终止吗
  • 大联大诠鼎集团推出基于联咏科技、思特威和TDK产品的电子防抖(EIS)摄像头方案
  • 面试复盘与 AI 大模型学习
  • BitLocker硬盘加密的详细教程分享