qt按照不同编码格式读取文字(UTF-16LE,UTF-8,UTF-8BOM,UTF-16BE)
enum class EncodingFormat : int
{ANSI = 0,//GBKUTF16LE,UTF16BE,UTF8,UTF8BOM,
};
EncodingFormat VideoPlayer::FileCharacterEncoding(const QString &fileName)
{//假定默认编码utf8EncodingFormat code = EncodingFormat::UTF8;QFile file(fileName);if (file.open(QIODevice::ReadOnly)){//读取3字节用于判断QByteArray buffer = file.read(3);quint8 sz1st = buffer.at(0);quint8 sz2nd = buffer.at(1);quint8 sz3rd = buffer.at(2);if (sz1st == 0xFF && sz2nd == 0xFE){code = EncodingFormat::UTF16LE;}else if (sz1st == 0xFE && sz2nd == 0xFF){code = EncodingFormat::UTF16BE;}else if (sz1st == 0xEF && sz2nd == 0xBB && sz3rd == 0xBF){code = EncodingFormat::UTF8BOM;}else{//尝试用utf8转换,如果无效字符数大于0,则表示是ansi编码QTextCodec::ConverterState cs;QTextCodec* tc = QTextCodec::codecForName("utf-8");tc->toUnicode(buffer.constData(), buffer.size(), &cs);code = (cs.invalidChars > 0) ? EncodingFormat::ANSI : EncodingFormat::UTF8;}file.close();}return code;
}
上面是解析文件格式,下面是按照格式读取内容
QString srtfile = "D://test.srt";
EncodingFormat code = FileCharacterEncoding(srtfile);QFile file(srtfile);if(!file.open(QIODevice::ReadOnly)) {qDebug()<<"未找到外挂字幕文件:"<<srtfile<<endl;}m_SrtInfoLst.clear();QTextCodec::ConverterState state;QTextCodec *codec = QTextCodec::codecForName("UTF-8");if(code==EncodingFormat::UTF16LE){codec = QTextCodec::codecForName("UTF-16LE");}else if(code==EncodingFormat::UTF8){codec = QTextCodec::codecForName("UTF-8");}else if(code==EncodingFormat::UTF8BOM){codec = QTextCodec::codecForName("UTF-8");}else if(code==EncodingFormat::UTF16BE){codec = QTextCodec::codecForName("UTF-16BE");}QTextStream stream_src(&file);stream_src.setCodec(codec);//这里就是按照对应格式解析出来了while(!stream_src.atEnd()) {QString str = stream_src.readLine();//一行一行获取内容//TODO:......}file.close();
相关文章:
qt按照不同编码格式读取文字(UTF-16LE,UTF-8,UTF-8BOM,UTF-16BE)
enum class EncodingFormat : int {ANSI 0,//GBKUTF16LE,UTF16BE,UTF8,UTF8BOM, }; EncodingFormat VideoPlayer::FileCharacterEncoding(const QString &fileName) {//假定默认编码utf8EncodingFormat code EncodingFormat::UTF8;QFile file(fileName);if (file.open(QI…...
R语言和RStudio的下载安装(非常简便舒适)
目录 R语言和RStudio的关系R语言和Tableau下载R语言进入官网选择清华镜像源Download R for Windows选择base版本开始下载进行安装配置环境变量检查是否安装成功 下载RStudio进入官网点击下载进行安装检查是否安装成功打开选择R语言环境成功打开显示四个工作区 R语言和RStudio的…...
SQL注入漏洞发现和利用,以及SQL注入的防护
一、背景 SQL注入漏洞是一种常见的软件安全问题,它发生在应用程序的数据库层中。其核心原理是将用户输入的数据当做代码来执行,违反了“数据与代码分离”的原则。具体来说,攻击者通过构造恶意的SQL查询语句,使得应用程序在执行SQ…...
Jmeter 分布式压测
为什么要分布式 jmeter是100%纯java开发的程序,虚拟用户是以线程实现的,在大量并发情况下,很容易出现CPU、内存消耗过大的问题,甚至会出现java内存溢出。一般一台电脑设置500-600线程数即可,如果超过1000线程…...
Docker 安装 Apache
目录 拉取官方 Apache 镜像 查看本地镜像 列出正在运行的容器 运行 Apache 容器 创建一个 HTML 文件:index.html 访问 Apache 拉取官方 Apache 镜像 查找 Docker Hub 上的 httpd 镜像。 可以通过 Tags 查看其他版本的 httpd,默认是最新版本 httpd…...
python变量、常量、数据类型
一、变量 变量是存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 因此,变量可以指定不同的数据类型,这些变量可以…...
注册中心CAP架构剖析
Nacos 支持 AP 或 CP AP Nacos 通过临时节点实现 AP 架构,将服务列表放在内存中; CP Nacos 通过持久化节点实现 CP 架构,将服务列表放在文件中,并同步到内存,通过 Raft 协议算法实现; 通过配置 epheme…...
SVN创建分支
一 从本地创建方式可指定版本号进行分支创建。 1、在本地目录右击 -----> 点击branch/tag(分支/标签) From: 源,可指定具体的版本号, To path: 可通过"..."选择分支路径 最后点击确定,交由服务器执行创建。 二 通过SVN客…...
Vue 设置v-html中元素样式
使用方式: <<< img { max-width: 100% } 如:要将v-html中的图片元素(img)的最大宽度设置为100%. <template><div ><div class"rtfDiv book" v-html"content"></div></div> </template&…...
连接服务器的脚本
对于记不住的服务器密码且不愿用三方工具俺简单写了个脚本(检测下最近shell脚本的学习效果咋样) expect 是处理交互的一种脚本语言,spawn启动指定进程 -> expect获取指定关键字 -> send想指定进程发送指定指令 -> 执行完成后退出 sp…...
ChatGPT/GPT4丨编程助手;AI画图;数据分析;科研/项目实现;提示词工程技巧;论文写作等
ChatGPT 在论文写作与编程方面也具备强大的能力。无论是进行代码生成、错误调试还是解决编程难题,ChatGPT都能为您提供实用且高质量的建议和指导,提高编程效率和准确性。此外,ChatGPT是一位出色的合作伙伴,可以为您提供论文写作的…...
35的程序员被辞了可以自己接外包啊?为什么都那么悲观呢?
35的年纪,上有老下有小,即将步入中年危机,在这个节骨眼上被辞,能不悲观吗? 在这个年纪人们往往追求的是稳定的工作和生活,而进入一个自己不熟悉的行业并不是一个好的选择。 况且,你认为的外包…...
2020年09月 Scratch(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 执行下面程序,屏幕上最多会看到多少个苹果? A:10个 B:11个 C:1个 D:无法确定 答案:B 第2题 关于下面程序,说法正确的是 ? A:执行 后,马上执行...
SpringBoot面试之SpringBoot自动装配原理
SpringBoot自动装配原理 背景 最近因为各种原因,我又重新加入到了找工作的大军当中。昨天在面试的时候与面试官聊到我们项目都是基于SpringBoot开发的,然后面试官就顺口问了句:”SpringBoot项目会引入许多的starter,比如&#x…...
JavaScript:监听事件
该方法用于向浏览器窗口注册事件监听器,当指定的事件(如单击、按键按下)被触发时,浏览器会自动调用指定的函数(回调函数)。 window.addEventListener(event, function, useCapture); 参数说明:…...
编写SQL语句,场景:从一张表中查询某字段是逗号分隔的集合值,需要遍历集合内每个值,将其作为条件去查询另一张表,最终返回列表
目录 场景编写SQL分页获取该开票单号下的所有订单列表使用子查询和 in 字句使用 find_in_set 场景 从一张表中查询某字段是逗号分隔的集合值,需要遍历集合内每个值,将其作为条件去查询另一张表,最终返回列表 编写SQL 分页获取该开票单号下…...
单链表相关面试题--7.链表的回文结构
7.链表的回文结构 链表的回文结构_牛客题霸_牛客网 (nowcoder.com) /* 解题思路: 此题可以先找到中间节点,然后把后半部分逆置,最近前后两部分一一比对,如果节点的值全部相同,则即为回文。 */ class PalindromeList…...
JUC(Java Util Concurrent)多线程并发库
JUC(Java Util Concurrent)是Java中用于编写多线程并发程序的库。开发过程中使用JUC主要有以下几个好处: 1. 提高程序性能:使用JUC可以实现多线程并发执行,充分利用多核CPU,提高程序的性能。 2. 简化代码…...
如何在Linux系统上检测GPU显存和使用情况?
如何在Linux系统上检测GPU显存和使用情况? 在Linux系统上,你可以使用一些命令行工具来检测GPU显存和使用情况。以下是一些常用的方法: 1. 使用nvidia-smi(仅适用于NVIDIA GPU) 如果你使用的是NVIDIA的显卡࿰…...
Django 入门学习总结5
修改polls/detail.html文件,写一个表单: <form action"{% url polls:vote question.id %}" method"post"> {% csrf_token %} <fieldset> <legend><h1>{{ question.question_text }}</h…...
Dinghy架构解析:深入理解docker-machine包装器的设计哲学
Dinghy架构解析:深入理解docker-machine包装器的设计哲学 【免费下载链接】dinghy faster, friendlier Docker on OS X 项目地址: https://gitcode.com/gh_mirrors/di/dinghy Dinghy作为一款为macOS用户打造的Docker工具,通过巧妙包装docker-mach…...
ohook安全分析:为什么它比传统KMS激活更安全可靠
ohook安全分析:为什么它比传统KMS激活更安全可靠 【免费下载链接】ohook An universal Office "activation" hook with main focus of enabling full functionality of subscription editions 项目地址: https://gitcode.com/gh_mirrors/oh/ohook …...
Phi-3.5-mini-instruct快速体验:免费开源的3.8B指令微调模型,中文问答实测
Phi-3.5-mini-instruct快速体验:免费开源的3.8B指令微调模型,中文问答实测 1. 模型简介 Phi-3.5-mini-instruct是微软推出的开源指令微调模型,参数规模为3.8B,支持128K超长上下文窗口。作为Phi-3系列中的轻量级成员,…...
告别断流!给老K3刷上最新OpenWrt固件,无线和NAS功能全都要的保姆级教程
斐讯K3路由器OpenWrt固件升级全攻略:告别断流与功能缺失 家里那台服役多年的斐讯K3路由器,是不是总让你在关键时刻掉链子?无线信号时断时续,管理界面卡顿难用,原本强大的硬件配置却因为软件问题成了摆设。别急着把它扔…...
保姆级避坑指南:在Ubuntu 22.04上用CMake+MPICH搞定LAMMPS(附依赖包配置)
科研计算实战:Ubuntu 22.04下LAMMPS的CMakeMPICH高效部署方案 在分子动力学模拟领域,LAMMPS作为开源利器被广泛应用,但新手在Linux环境部署时往往被依赖冲突、编译报错等问题困扰。本文将分享一套经过验证的安装方案,特别针对国内…...
MySQL explain 输出分析指南
MySQL explain 输出分析指南:优化SQL性能的钥匙 在数据库性能优化中,MySQL的explain命令是开发者不可或缺的工具。通过分析其输出结果,可以深入了解SQL语句的执行计划,从而发现潜在的性能瓶颈。无论是慢查询的排查,还…...
Win11Debloat:让Windows系统恢复流畅的终极优化指南
Win11Debloat:让Windows系统恢复流畅的终极优化指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and cust…...
G-Helper深度解析:华硕笔记本硬件控制与性能调优技术指南
G-Helper深度解析:华硕笔记本硬件控制与性能调优技术指南 【免费下载链接】g-helper The control app every laptop should come with. G-Helper is a fast, native tool for tuning performance, fans, GPU, battery, and RGB on any Asus laptop or handheld - RO…...
基于Java开发的制造业MES生产管理系统源码(含ERP集成模块)
温馨提示:文末有联系方式核心功能模块详解 本系统是一套面向制造企业的Java语言开发的MES(制造执行系统)解决方案,同时兼容ERP系统集成。 核心功能包括精细化物料控制、动态生产计划排程、全过程质量管理、多维度生产数据分析等&a…...
鸿蒙Ads Kit(广告服务):激励广告开发(二)
激励广告是一种全屏幕的视频广告,用户可以选择点击观看,以换取相应奖励(如游戏复活、获取道具、积分等)。一、场景介绍激励广告是一种全屏幕的视频广告,用户可以选择点击观看,以换取相应奖励。场景…...
