Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Qt读取UTF8与GBK格式文件乱码问题

Qt读取UTF8与GBK格式文件乱码问题

作者头像
Qt君
发布于 2019-07-15 07:41:10
发布于 2019-07-15 07:41:10
3.4K00
代码可运行
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程
运行总次数:0
代码可运行

window下文件一般为GBK格式文件,而Linux系统下文件一般为UTF8文件,当文件读取格式不匹配时,读取到的数据显示为乱码,所以需要转码.

GBK格式文件读取

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QFile file("GBK.txt");
file.open(QFile::ReadOnly | QFile::Text);
QTextCodec *codec = QTextCodec::codecForName("GBK");
QString content = codec->toUnicode(file.readAll());
qDebug()<<"Display GBK.txt file"<<content;

UTF8格式文件读取

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QFile file("UTF8.txt");
file.open(QFile::ReadOnly | QFile::Text);
QTextCodec *codec = QTextCodec::codecForName("UTF8");
QString content = codec->toUnicode(file.readAll());
qDebug()<<"Display UTF8.txt File: "<<content;

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Display GBK.txt file "Hello world
中文
" 
Display UTF8.txt File:  "Hello world
你好
"

注意

  • 使用QTextCodec前需要先构造QCoreApplication类或其派生类否则转码不成功.

源文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <QCoreApplication>
#include <QFile>
#include <QTextCodec>
#include <QDebug>

static void displayGBKFile()
{
    QFile file("GBK.txt");
    file.open(QFile::ReadOnly | QFile::Text);
    QTextCodec *codec = QTextCodec::codecForName("GBK");
    QString content = codec->toUnicode(file.readAll());
    qDebug()<<"Display GBK.txt file"<<content;
}

static void displayUTF8File()
{
    QFile file("UTF8.txt");
    file.open(QFile::ReadOnly | QFile::Text);
    QTextCodec *codec = QTextCodec::codecForName("UTF8");
    QString content = codec->toUnicode(file.readAll());
    qDebug()<<"Display UTF8.txt File: "<<content;
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    displayGBKFile();
    displayUTF8File();

    return a.exec();
}

源码地址

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/myqtdemo/QtUTF8AndGBKCoding.git
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C/C++ Qt 基本文件读写方法
Qt文件操作有两种方式,第一种使用QFile类的IODevice读写功能直接读写,第二种是利用 QFile和QTextStream结合起来,用流的方式进行文件读写。
王瑞MVP
2022/12/23
6510
Qt学习笔记网络(一)
Qt5 移除了QHttp是因为功能重复 用QNetworkAccessManager完全能搞定 新建一个控制台应用程序 看一下QNetworkAccessManager的帮助文档 需要添加Qt + =
lpxxn
2018/01/31
1.1K0
Qt学习笔记网络(一)
Qt 学习记录
[],标识一个 Lambda 的开始,这部分必须存在,不能省略。外部变量访问方式说明符只能使用定义 Lambda 为止时 Lambda 所在作用范围内可见的局部变量(包括 Lambda 所在类的 this)。外部变量访问方式说明符有以下形式:
小简
2023/01/04
7.2K0
Qt 学习记录
【QT】QT文件处理
QFile类用于文件操作,它提供了读写文件的接口,可以读写文件、二进制文件和Qt资源文件。
半生瓜的blog
2023/05/13
1.6K0
【QT】QT文件处理
Qt5实战第六篇:文件操作与输入输出
在 Qt5 中,文件操作与输入输出(I/O)是开发桌面应用程序时不可或缺的一部分。Qt 提供了丰富的类和方法来处理文件的读写、目录的遍历以及数据流的处理。本篇将详细介绍如何在 Qt5 中进行文件操作与输入输出。
china马斯克
2024/12/29
3640
46.QT-自带库QSerialPort串口使用
之前一章学习的是第三方库使用: 34.QT-qextserialport第三方库制作串口助手(并动态检测在线串口,附带源码)
诺谦
2019/06/14
6.9K0
46.QT-自带库QSerialPort串口使用
Qt入门系列(三)
选装父文件—>添加文件-->Qt--->设计师界面->命名smallWidget(简称sw)
用户9831583
2022/06/16
1.2K0
Qt入门系列(三)
Qt实战:云曦日历篇
自国务院印发《推进普惠金融发展规划(2016—2020年)》通知以来,各省、自治区、直辖市人民政府、国务院各部委各直属机构积极响应,认真贯彻执行,普惠金融发展已经进入了高潮阶段,各大互联网公司和高校紧跟时代潮流,推出了各种创新性产品和软件,该软件作为一款以培养兴趣,提高学生软件项目的编程项目能力为目的,所创建的一款实用性的软件,以日历为依托,创建了许多相关的特效,优美界面和天气查询、日程管理等实用性功能,且界面等均符合当下青少年的审美需求,是一款紧跟潮流的日历软件
灵彧
2022/10/31
1.5K0
Qt实战:云曦日历篇
QML文件读写控件(预览版)
File组件通过source的属性来设置需要读写的文件,还可以通过访问/设置text的内容来读取/写入文件。
Qt君
2019/12/25
7010
【QT】系统事件入门 -- 文件 QFile基础和示例
🔥 文件操作是应用程序必不可少的部分。Qt 作为⼀个通用开发库,提供了跨平台的文件操作能力。Qt 提供了很多关于⽂件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件制或重命名等
IsLand1314
2025/03/21
870
【QT】系统事件入门 -- 文件 QFile基础和示例
14.QT-QFile文件,QBuffer缓冲区,QDir目录,QFileSystemWatcher文件系统监视
QFile Qt中所有与IO相关的类都继承于QIODevice,继承图如下所示: 其中QFile类便是用于文件操作的类 在QT中,将文件当做一种特殊的外部设备对待(比如:串口,usb等就是外部设备)
诺谦
2018/05/28
2.3K0
【QT】qt 文件操作
文件操作是应用程序必不可少的部分。Qt 作为⼀个通用开发库,提供了跨平台的文件操作能力。 Qt 提供了很多关于文件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件复制或重命名等。
YoungMLet
2024/07/30
2090
【QT】qt 文件操作
记录一个解决Arm Linux端U盘挂载时文件名显示乱码、Qt显示乱码的问题
我的方案开发选择采用SD卡/U盘的方式来加载3D打印模型文件,因此在PC端U盘里的文件的显示是这样的:
杨源鑫
2022/03/24
3.3K0
记录一个解决Arm Linux端U盘挂载时文件名显示乱码、Qt显示乱码的问题
qml读写文件
利用qmlRegisterType接口注册一个文件操作类到Qml中,这样Qml就可以实现读写文件。 1 FileObject.h #ifndef FILE_OBJECT_H #define FILE_OBJECT_H #include <QObject> class FileObject : public QObject { Q_OBJECT Q_PROPERTY(QString source READ source WRITE setSource NOTIFY sourceChang
Qt君
2019/07/15
2.3K0
【QT】文件系统相关 -- QFile
🔥 文件操作是应用程序必不可少的部分。Qt 作为⼀个通用开发库,提供了跨平台的文件操作能力。Qt 提供了很多关于⽂件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件制或重命名等
IsLand1314
2025/03/15
1110
【QT】文件系统相关 -- QFile
QT软件开发: QProcess启动进程完成交互并获取输出
QProcess允许将进程视为I/O设备。可以像使用qtcsocket访问网络连接一样对进程进行写入和读取。然后可以通过调用write()写入进程的标准输入,并通过调用read()、readLine()和getChar()读取标准输出。因为QProcess继承了QIODevice,所以它还可以用作QXmlReader的输入源,或者用于生成要使用QNetworkAccessManager上载的数据。
DS小龙哥
2022/01/12
9.3K1
QT软件开发: QProcess启动进程完成交互并获取输出
Qt的QFile
配合QFileDialog:“文件对话框”,一起食用将会更好哦! 专门讲QFileDialog的博文
全栈程序员站长
2022/07/01
1.9K0
04 qt功能类、对话框类和文件操作
对于Qt而言,在实际的开发过程中, 1)开发者可能知道所要使用的类 ---- >帮助手册 —>索引 -->直接输入类名进行查找 2)开发者可能不知道所要使用的类,只知道开发需求文档 ----> 帮助 手册,按下图操作:
天天Lotay
2023/10/15
2430
04 qt功能类、对话框类和文件操作
Qt中的QFile读写文件操作
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130796.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/01
1.2K0
Qt中的QFile读写文件操作
发布QtCsv文件转语言翻译文件工具
将Csv格式文件转换为qm翻译文件,中间无需干预手动干预ts文件即可完成翻译文件的制作。 直接生成qm文件的工具 我们做Qt翻译文件时候一般使用 lupdate xx.pro生成ts文件,再根据翻译使用Qt Linguist Manual工具修改ts后再使用 lrelease*.ts生成对应的qm文件。这一过程略显繁琐,作者的本意是简化该流程并能提供一个通用的翻译文本格式(csv)给翻译人员使用; 本工具是通过csv翻译文件翻译到qm文件的工具,简单易用; 文尾附部分源码与源码地址。 实现 Csv解析实现使
Qt君
2019/07/15
1K0
相关推荐
C/C++ Qt 基本文件读写方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验