QT读写文本文件编码设置

Qt -- QFile文件读写操作 对于文件的读写操作,C 和 C++ 都各有一套方式。而在 Qt 中也有一套,即使用 QFile 对文件进行读和写操作。 首先创建一个新的工程,以下操作为了迎合 嵌入式Linux 开发,决定在 ubuntu 中进行,并使用 rsync 进行远程调试。 首先,窗体中搭建一个场景,并且将窗体固定为开发板屏幕的大小为1024 * 600 。 搭建步骤如下:首先,将控件 LineEdit 和 PushButton 放入到 Widget 控件中,然后点击选中 Widget 控件 ,使用水平对齐,之后将控件 TextEd 阅读详情

QT读写文本文件编码设置

一、编码知识科普
Qt常见的两种编码是:UTF-8和GBK
★UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
★GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。GBK是GB2312的扩展,除了兼容GB2312外,它还能显示繁体中文,还有日文的假名。
★GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
★在简体中文windows系统下,ANSI编码代表GBK/GB2312编码,ANSI通常使用0x800xFF范围的2个字节来表示1个中文字符。0x000x7F之间的字符,依旧是1个字节代表1个字符。Unicode(UTF-16)编码则所有字符都用2个字节表示。

三、编码转换

Windows自带的记事本,无法查看UTF-8编码的文件到底有无BOM,需要使用其他文件编辑器,比如Notepad++或者SublimeText。

四、QString显示中文乱码的原因

  1. 读取文件编码类型设置错误
    Windows系统本地字符编码(Local字符集)为GBK 即ANSI(文本文档)。编译器分析出源文件字符编码之后,会进行解码再编码,将源字符集转码成执行字符集。执行字符集一般默认为使用本地字符编码(Local字符集),若指定UTF-8编码,而本地实际为GBK时变为乱码。
  2. 文本中存在不同的编码格式的文本
    比如存在ANSI(GBK)和UTF-8 无论通过哪一种读写都会出现乱码
    若txt文件是ansi格式 其中存在UTF-8编码的字符串 则读取这部分字符时出现乱码。
    可通过NotePad++切换编码确定那一部分是ANSI或UTF-8
    先通过ANSI(GBK) 读取所有字符串 获得UTF-8的字符串otherLineStr后进行转换、然后重新 写入UTF-8的文件中
   otherLineStr = otherLineStr.toLocal8Bit().data();

注意:当写入文件中的字符串有中文时,qt默认ANSI编码

五、设置字符读写字符集
Qt5可以设置Local字符集,GBK/UTF-8

			QTextStream stream(&readFile);
			stream.setCodec("GBK");

			QTextCodec* codec = QTextCodec::codecForName("UTF-8");
			strAll = codec->toUnicode(readFile.readAll());
			
			QTextCodec *codec = QTextCodec::codecForName("UTF-8");//或者"GBK",不分大小写
			QTextCodec::setCodecForLocale(codec); //全局编码设置

六、QString简介
Qt5中QString内部采用unicode字符集,utf-16编码。构造函数QString::QString(const char *str)默认使用fromUtf8(),从文件中读取时ANSI(GBK)的文件使用fromLocal8Bit(), 将str所指的执行字符集从utf-8转码成utf-16。
由上面fromUtf8()可知,QString需要执行字符集编码为utf-8,然后以utf-8进行解码,再编码为utf-16才能获得正确的字符编码。

https://www.cnblogs.com/sggggr/p/12797951.html

QT小记:关于修改文件编码的问题 文件打开时中文乱码,需要重新指定编码格式,而且每个源文件需要指定一次,更可气的是,每次重新打开源文件都要再制定一次。1.3 关闭项目,重新打开,所有文件的编码被修改为指定的编码。工具-选项-文本编辑器-behavior-文件编码。1.2 选成需要的文件编码,点击ok保存。...... 阅读详情

相关推荐

【QT】文本文件读写

文本文件是指以纯文本格式存储的文件,例如用QtCreator编写的c++程序的头文件(.h文件)和源程序文件(.cpp文件)。HTML和XML文件也是纯文本文件,只是其读取之后需要对内容进行解析之后再显示。Qt提供了两种读写纯文本文件的基本方法,一种是用QFile类的IODevice读写功能直接进行读写,另一种是利用QFile和QTextStream结合起来,用流(Stream)的方法进行文件读写。实例samp7_1演示了这两种方法读写文本文件,实例不仅演示了如何打开文本文件,还有文件保存功能。

u011671745的博客 1711

Qt笔记25:QFile读写中文乱码:指定文件编码方式

QFile读写中文乱码:指定文件编码方式 解决方法用QTextStream来读写文本 QTextStream in(&file); in.setCodec("UTF-8"); // 设置文件的编码格式为UTF-8 QString line = in.readLine(); // 此时以UTF-8的方式从文件中读取内容,结果正常 ...

weixin_42962516的博客 6195

Halcon窗体开发避坑指南:C#自定义控件实现7大图像交互功能

本文详细介绍了如何利用C#封装自定义Halcon控件,以解决原生HWindowControl功能不足的问题。通过实战代码,展示了如何实现图像按比例显示、鼠标拖动缩放、灰度值读取、图像保存、截图及图形叠加等七大核心交互功能,并重点剖析了内存管理、坐标转换等开发避坑要点,帮助开发者构建稳定可复用的机器视觉组件库。

weixin_29251131的博客 292

彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)

一、Qt Creator环境设置 1、cpp或h文件从window上传到Ubuntu后会显示乱码,原因是因为ubuntu环境设置默认是utf-8,Windows默认都是GBK. 我们使用的Windows系统本地字符集编码为GBK。 2、Windows环境下,Qt Creator,菜单->工具->选项->文本编辑器->行为->文件编码->默认编码,常用的选项有以下几个: System(简体中文windows系统默认指的是GBK编码) GBK/windows-936-2000

qq_656236576的博客 1万+

泛微ecology9 利用字段值动态控制明细表显示与隐藏

本文详细介绍了在泛微ecology9中,如何利用WfForm.bindFieldChangeEvent监听字段变化,结合jQuery动态控制明细表显示与隐藏的实战方法。通过五步操作,可实现根据字段值(如报销类型)智能切换明细表,提升表单交互体验与开发效率,并确保PC与移动端完美兼容。

7z8x2c4v6b9的博客 585

汽车ECU诊断入门:手把手教你用UDS协议(ISO14229)读取和清除故障码

本文详细介绍了如何使用UDS协议(ISO14229)进行汽车ECU诊断,包括故障码读取与清除的完整流程。从诊断环境搭建、UDS协议基础到实战案例分析,手把手教你掌握0x19诊断服务、安全访问机制等核心技能,适用于汽车电子工程师和诊断开发人员。

weixin_33701251的博客 450

Qt文件编码转换

主要使用QFile、QTextStream及QTextCodec三个类,先进行文件编码的识别(ANSI、UTF-8、UTF-8 BOM、UTF-16 LE、UTF-8 BE),再进行文件编码的转换。主要用于Qt项目中源代码的批量转换,从ANSI或UTF-8转换为UTF-8 BOM。

wisdomroc的博客 2557

Qwen3.5在昇腾NPU上部署:vLLM-Ascend全链路实战

大语言模型推理框架(如vLLM)通过PagedAttention等内存调度机制,显著提升显存利用率与吞吐性能;国产AI芯片(如昇腾NPU)需配套专用算子优化与硬件感知调度才能释放真实算力。本文聚焦Qwen3.5大语言模型在昇腾平台的端到端部署,深入解析vLLM-Ascend如何协同CANN工具链、适配RoPE位置编码与Tokenizer映射、调优block_size与kv_cache_dtype等关键参数,实现单卡42 tokens/s高吞吐与112ms低延迟。内容覆盖环境验证、源码编译、模型权重转换、服务

weixin_34335458的博客 277

Qt之文本文件读写

QFile data("file.txt"); if (data.open(QFile::ReadOnly)) { QTextStream in(&data); QString str; int ans = 0; in >> str >> ans; } XXXXXXXXXXXXXXXXXXXXXXXXX...

世间所有的相遇都是久别重逢 513

新手必看!手把手教你如何在飞牛NAS上玩转Docker容器!(飞牛Nas(fnOS)如何创建Docke容器以及Compose部署项目)

新手必看!手把手教你如何在飞牛NAS上玩转Docker容器!(飞牛Nas(fnOS)如何创建Docke容器以及Compose部署项目)

XiaoqiangClub的博客 1万+

(论文加源码)基于CNN和LSTM的脑电情绪识别(数据集为DEAP和seed)

论文及源码见个人主页:https://download.youkuaiyun.com/download/qq_45874683/84118637?spm=1001.2014.3001.5503 (论文加源码)基于CNN和LSTM的脑电情绪识别(数据集为DEAP和seed)4D-CRNN 目录 目录: 运行过程: 1. 运行1D文件(没有什么bug): 2. 再运行3D文件(没有出现bug): 3. 最后运行main文件(出现了两个bug)(前提需要配置好tensorflow的框架): 第一个bug是..

qq_45874683的博客 6363

QT 文件读写

上一章我们介绍了有关二进制文件的读写。二进制文件比较小巧,却不是人可读的格式。而文本文件是一种人可读的文件。为了操作这种文件,我们需要使用QTextStream类。QTextStream和QDataStream的使用类似,只不过它是操作纯文本文件的。另外,像 XML、HTML 这种,虽然也是文本文件,可以由QTextStream生成,但 Qt 提供了更方便的 XML 操作类,这里就不包括这部分

Allen Roson 1466

Android 64位支持的坑:诡异的文件名问题

最近在尝试发布我的Android应用程序的更新时,遇到了一个令人困惑的64位错误。本文将详细讲解这个问题的产生原因及解决方法,供大家参考。

m0_74337424的博客 122

Qt文本文件读写

QFile file("sf-book.txt");   if (!file.open(QIODevice::WriteOnly)) {       std::cerr 

leaf6094189的专栏 2495

Python 爬虫实战:模拟登录网易云音乐(加密接口逆向与自动化登录实现)

网易云音乐作为国内主流的音乐流媒体平台,其丰富的音乐资源和个性化推荐算法吸引了大量用户。对于开发者而言,模拟登录网易云音乐并实现自动化操作,可以用于数据分析、歌单同步、歌词抓取等场景。然而,网易云音乐采用了多重加密机制和反爬策略,直接模拟登录存在较大挑战。

yansideyucsdn的博客 2589

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

qt写文本文件换行符_Qt 文本文件读写

文本文件读写二进制文件比较小巧,但是不是人可读的格式。文本文件是一种人可读的格式的文件,为了操作这种文件,我们需要使用 QTextStream 类。QTextStream 和 QDataStream的使用类似,只不过它是操作纯文本文件的。还有一些文本格式,比如 XML、HTML,虽然可以由 QTextStream 生成,但 Qt 提供了更方便的 XML 操作类,这里就不包括这部分内容了。QText...

weixin_28292761的博客 2901

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【笔记1-1】Qt系列:Qt读写txt文本文件

Qt系列:Qt读写txt文本文件 二进制文件的读写文件可以使用QFile类、QStream 文本文件的读写建议使用QTextStream类,它操作文件更加方便。 打开文件时,需要参数指定打开文件的模式: 模式 描述 QIODevice::NotOpen 不打开 QIODevice::ReadOnly 只读方式 QIODevice::WriteOnly 只写方式,如果文件不存...

qq_43598101的博客 4349

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

文本文件读写

二进制文件比较小巧,但是不是人可读的格式。文本文件是一种人可读的格式的文件,为了操作这种文件,我们需要使用QTextStream类。QTextStream和QDataStream的使用类似,只不过它是操作纯文本文件的。还有一些文本格式,比如XML、HTML,虽然可以由QTextStream生成,但Qt提供了更方便的XML操作类,这里就不包括这部分内容了。QTextStream会自动将 Un

juneman的专栏 561

Qt 学习之路:文本文件读写

上一章我们介绍了有关二进制文件的读写。二进制文件比较小巧,却不是人可读的格式。而文本文件是一种人可读的文件。为了操作这种文件,我们需要使用QTextStream类。QTextStream和QDataStream的使用类似,只不过它是操作纯文本文件的。另外,像 XML、HTML 这种,虽然也是文本文件,可以由QTextStream生成,但 Qt 提供了更方便的 XML 操作类,这里就不包括...

weixin_30651273的博客 115

qt引入txt文件_Qt学习之路(57): 文本文件读写

二进制文件比较小巧,但是不是人可读的格式。文本文件是一种人可读的格式的文件,为了操作这种文件,我们需要使用QTextStream类。QTextStream和QDataStream的使用类似,只不过它是操作纯文本文件的。还有一些文本格式,比如XML、HTML,虽然可以由QTextStream生成,但Qt提供了更方便的XML操作类,这里就不包括这部分内容了。QTextStream会自动将 Unicod...

weixin_39759155的博客 472

Qt学习之路(57): 文本文件读写

Qt学习之路(57): 文本文件读写 2010-04-16 23:21:13 标签:Qt C++ 教程 QT教程 学习 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://devbean.blog.51cto.com/448512/297145 二进制文件比较小巧,但是不是人可读的格式。文本文件是一种

carrie0728的专栏 484

Qt 5.9 C++开发指南17——文本文件读写、二进制文件读写、文本目录操作

文本文件读写 QFile直接打开 QFile另存 QTextStream打开 QTextStream另存 解决汉字乱码问题 二进制文件读写 表格复位 Qt预定义编码读取 Qt预定义编码保存 data标准编码读取 data标准编码保存 ...

qq_42832272的博客 317

QT---之QTextStream的使用概念

 二进制文件比较小巧,但是不是人可读的格式。文本文件是一种人可读的格式的文件,为了操作这种文件,我们需要使用QTextStream类。QTextStream和QDataStream的使用类似,只不过它是操作纯文本文件的。还有一些文本格式,比如XML、HTML,虽然可以由QTextStream生成,但Qt提供了更方便的XML操作类,这里就不包括这部分内容了。 QTextStream会自动将 Uni...

weixin_39609623的博客 1万+

Qt中文支持和文件读写

Qt 中文支持 QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8")); Qt 读写字符文件 #include #include #include //读文件 void  Rea

启航2008的博客 761

qt写文本文件换行符_Qt向文本文件输出换行

使用QTextStream向txt文件输出换行时,需要使用QIODevice::Text标志。官方文档对QIODevice::Text的解释:When reading, the end-of-line terminators are translated to '\n'. When writing, the end-of-line terminators are translated to the...

weixin_42531128的博客 3885
上一篇: linux vim配置头文件搜索路径
下一篇: linux更新程序列表
hiprogram
博客等级 码龄10年 1粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值