Qt使用中文字符串乱码的问题


 我们在使用qt的时候有时候会遇到打印中文字符串的时候出现中文乱码的问题,主要是由于Qt的QString字符串存储的方式是使用utf-8的编码方式,如果我们本地的文件是使用GBK方式的编码再使用中文字符串的话就会出现打印乱码的情况。

vs编译器下

 首先我们在vs编译器下使用中文字符串实验一下:

#include <QtWidgets/QApplication>
#include <QDebug>
#include <QMessageBox>
#include <QtCore5Compat/qtextcodec.h>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
   

    QApplication a(argc, argv);

    QString str = "中文测试";

    qDebug() << str;

    cout << str.toStdString() << endl;
    QMessageBox::information(0, "title", str);
    return a.exec();
}


在这里插入图片描述
 现在如果我们在文件中使用中文字符串的话打印出来都是乱码的,因为我们的文件是以GBK编码方式的,而QString内部存储字符串是以UTF-8的方式来的,所以会出现乱码。

第一种解决方式

我们可以将文件的编码方式修改为utf-8方式编码的即可。
在这里插入图片描述
在高级选项中可以进行设置。
在这里插入图片描述
 但是我们看到使用c++方式打印的字符串乱码,这是由于cout需要是以GBK方式编码的字符串进行打印。

cout << str.toLocal8Bit().toStdString() << endl;

将字符串先转化成本地的编码方式,即GBK的编码方式。
在这里插入图片描述

第二种解决方式

 Qt内部其实提供了当我们文件的编码方式为GBK时将字符串转化为UTF-8编码方式赋给QString。

QString str = QString::fromLocal8Bit("中文测试");

在这里插入图片描述

Qt编译器下

#include "widget.h"

#include <QApplication>
#include <QDebug>
#include <QMessageBox>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
   
    QApplication a(argc, argv);
    QString str = "中文测试";

    qDebug() << str;

    cout << str.toLocal8Bit().toStdString() << endl;
    QMessageBox::information(0, "title", str);
    return a.exec();
}

在这里插入图片描述
没有进行设置的话,Qt的文件编码方式都是utf-8,所以直接使用中文也不会出问题。
在这里插入图片描述
需要修改的话可以在这边进行修改。

相关推荐

  1. Qt::中文问题解决

    2024-01-29 04:26:01       13 阅读
  2. QT 中文 以及 tr 使用

    2024-01-29 04:26:01       6 阅读
  3. Qt MSVC编译器中文字符串编译报错及问题

    2024-01-29 04:26:01       15 阅读
  4. Qt读写ini文件,出现中文问题

    2024-01-29 04:26:01       39 阅读
  5. QT】包含中文QString转换为std::string问题

    2024-01-29 04:26:01       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-29 04:26:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-29 04:26:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-29 04:26:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-29 04:26:01       20 阅读

热门阅读

  1. Redis客户端之Redisson(二)Redisson组件

    2024-01-29 04:26:01       34 阅读
  2. C++ day1

    C++ day1

    2024-01-29 04:26:01      34 阅读
  3. Redis介绍以及安装

    2024-01-29 04:26:01       42 阅读
  4. Leetcode. 212 单词搜索II

    2024-01-29 04:26:01       35 阅读
  5. 学习总结3

    2024-01-29 04:26:01       30 阅读
  6. Linux第一个小程序---进度条

    2024-01-29 04:26:01       40 阅读
  7. VLM 系列——BLIP2——论文解读

    2024-01-29 04:26:01       31 阅读
  8. 嵌入式产品的开发流程

    2024-01-29 04:26:01       34 阅读
  9. Git入门

    Git入门

    2024-01-29 04:26:01      31 阅读
  10. STM32 SDIO接口配置与使用方法详解

    2024-01-29 04:26:01       46 阅读
  11. Mybatis-获取参数值的两种方式

    2024-01-29 04:26:01       40 阅读