QT4-QT5-QString-const char* 之间的转换

最好所有QT项目     文件编码:         UTF-8
                            QString 编码:          UTF-8
                            const char* 编码:  UTF-8  
 

1.QString 有2种编码:  UTF-8   GBK  默认的是UTF-8
  1.1  QString :  GBK -> UTF-8 
          1.使用 toUtf8() 方法

QString gbkString = ...; // 假设这是一个使用 GBK 编码的 QString 对象
QByteArray utf8Bytes = gbkString.toUtf8();
QString utf8String = QString::fromUtf8(utf8Bytes);
  • toUtf8() 方法将 QString 转换为 UTF-8 编码的 QByteArray
  • QString::fromUtf8() 方法将 UTF-8 编码的 QByteArray 转换为 QString 对象。

          2 使用 fromLocal8Bit() 方法

QString gbkString = ...; // 假设这是一个使用 GBK 编码的 QString 对象
QString utf8String = QString::fromLocal8Bit(gbkString.toLocal8Bit());

   1.2  QString: UTF-8 ->GBK

            1.使用 toLocal8Bit() 方法

QString utf8String = ...; // 假设这是一个使用 UTF-8 编码的 QString 对象
QByteArray gbkBytes = utf8String.toLocal8Bit();
QString gbkString = QString::fromLocal8Bit(gbkBytes);
  •  
    • toLocal8Bit() 方法将 QString 转换为当前系统的本地编码(在某些系统上默认为 GBK)的 QByteArray
    • QString::fromLocal8Bit() 方法将本地编码的 QByteArray 转换为 QString 对象,这里假设本地编码为 GBK。
       

          2.使用 fromUtf8()toLocal8Bit()      

QString utf8String = ...; // 假设这是一个使用 UTF-8 编码的 QString 对象
QByteArray utf8Bytes = utf8String.toUtf8();
QByteArray gbkBytes = QString::fromUtf8(utf8Bytes).toLocal8Bit();
QString gbkString = QString::fromLocal8Bit(gbkBytes);
  •  
    • toUtf8() 方法将 QString 转换为 UTF-8 编码的 QByteArray
    • fromUtf8() 方法将 UTF-8 编码的 QByteArray 转换为 QString 对象。
    • toLocal8Bit() 方法将 QString 转换为当前系统的本地编码(在某些系统上默认为 GBK)的 QByteArray
    • QString::fromLocal8Bit() 方法将本地编码的 QByteArray 转换为 QString 对象,这里假设本地编码为 GBK。


2. const char*   有多种编码:  UTF-8   GBK  ANSI
       

3.const char *  未知编码  转成   QString UTF-8编码



 

#include <QString>
#include <QTextCodec>
#include <QDebug>QString convertToUtf8QString(const char* input)
{// List of commonly used codecs to tryconst char* codecs[] = {"UTF-8", "GBK", "GB2312", nullptr};// Try each codec until successful conversionfor (int i = 0; codecs[i] != nullptr; ++i) {QTextCodec* codec = QTextCodec::codecForName(codecs[i]);if (!codec) {qDebug() << "Codec" << codecs[i] << "not supported.";continue;}QString result = codec->toUnicode(input);// Check if result contains valid dataif (!result.isEmpty()) {qDebug() << "Successfully converted using codec" << codecs[i];return result;}}// Fallback: Return as QByteArray if conversion failsreturn QString::fromLatin1(input);
}int main()
{const char* unknownEncodingString = "Hello, 你好";QString utf8QString = convertToUtf8QString(unknownEncodingString);qDebug() << "UTF-8 QString:" << utf8QString;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开放式耳机哪个牌子好?2024热门红榜开放式耳机测评真实篇!

当你跟朋友们聊天时&#xff0c;他们经常抱怨说长时间戴耳机会令耳朵感到不适,后台也有很多人来滴滴我&#xff0c;作为一位致力于开放式耳机的测评博主&#xff0c;在对比了多款开放式耳机之后&#xff0c;你开放式耳机在保护听力方面确实有用。开放式的设计有助于减轻耳道内的…

Hive 实操案例一:统计 Top10 视频观看数

一、数据表结构 视频表 t_video 字段注释描述videoId视频唯一 id(String)11 位字符串uploader视频上传者(String)上传视频的用户名 Stringage视频年龄(int)视频在平台上的整数天category视频类别(Array<String>)上传视频指定的视频分类length视频长度(Int)整形…

【EXCEL技巧】Excel如何将数字前面的0去掉

Excel文件中经常会遇到数据是0001345这种&#xff0c;那么&#xff0c;如何将数字前面的0去掉呢&#xff1f;今天和大家分享方法。 首先&#xff0c;选中一列空的单元格&#xff0c;然后在单元格中输入公式TEXT(D3,0)&#xff0c;这里的D3指的是前面带有0的数据的位置 回车之后…

数组:移除元素

参考资料&#xff1a;代码随想录 本题思路&#xff1a;通过快慢指针将两次循环减少到一次 class Solution {public int removeElement(int[] nums, int val) {//0 1 2 2 2 2 3int fast 0;int slow 0;while(fast < nums.length){if(nums[fast] ! val){nums[slow] nums[f…

DAMA学习笔记(三)-数据架构

1.引言 架构是构建一个系统&#xff08;如可居住型建筑&#xff09;的艺术和科学&#xff0c;以及在此过程中形成的成果——系统本身。用通俗的话说&#xff0c;架构是对组件要素有组织的设计&#xff0c;旨在优化整个结构或系统的功能、性能、可行性、成本和用户体验。 对于架…

Django ModelForm 初识:简化表单处理和数据验证

ModelForm 是 Django 提供的一个强大工具,它可以根据已定义的模型自动生成表单字段。这不仅简化了表单的创建过程,还确保了表单字段与数据库模型的一致性。本文将介绍 ModelForm 的基本用法及其优势。 1. 模型定义 首先,让我们看一下我们的用户模型定义: # models.py fr…

制作TTS前端模型数据集,预训练bert模型的字典数据是怎么调用的-chatgpt问答生成

制作TTS前端模型数据集&#xff0c;预训练bert模型的字典数据是怎么调用的 1. tokenizer AutoTokenizer.from_pretrained("bert-base-chinese")命令解释结果和作用分词器的作用示例使用总结 2. toks tokenizer.encode(arr[i], add_special_tokensFalse)具体解析命令…

如何在SOLIDWORKS中高效管理文件属性?

当我们完成零件设计&#xff0c;出工程图后&#xff0c;发现零件中部分属性值需修改&#xff0c;或漏掉一些属性值需要添加&#xff0c;也可能老旧的设计图纸需要统一规范。 这时我们用SOLIDWORKS自带的属性标签工具就可以快速完成文件的属性编辑。 1打开工程图纸&#xff0c;…

生鲜水果行业wordpress主题

水果蔬菜wordpress外贸自建站模板 水果、脐橙、牛油果、菠萝、凤梨、鲜枣、苹果、芒果、瓜果、百香果wordpress外贸独立站模板。 https://www.jianzhanpress.com/?p3932 生鲜wordpress外贸出口网站模板 水果、蔬菜、肉蛋奶、水产、干货等生鲜产品wordpress外贸出口公司网站…

Redis 如何解决集群情况下分布式锁的可靠性?

Redis如何解决集群情况下分布式锁的可靠性&#xff1f; Redis 主从复制模式中的数据是异步复制的&#xff0c;导致分布式锁的不可靠性。如果在 Redis 主节点获取到锁后&#xff0c;在没有同步到其他节点时&#xff0c;Redis 主节点宕机了&#xff0c;此时新的 Redis 主节点依然…

Postman 怎么测接口?实用教程

在当前&#xff0c;API&#xff08;应用程序接口&#xff09;的使用变得越来越普遍。其中&#xff0c;HTTP/HTTPS API 是最常见的一种。无论是开发前端还是后端&#xff0c;测试 API 都是一个关键环节。Postman 是一种流行且强大的 API 测试工具&#xff0c;能够帮助开发人员轻…

好用的兼容性测试工具推荐

兼容性测试确保软件在不同系统和环境中的一致性。本指南探讨了开发人员和QA专业人员有效检测和解决问题的工具&#xff0c;从而提高应用程序的稳健性和用户满意度。 好用的兼容性测试工具推荐 1.Lambda测试 它是一个由AI驱动的测试编排和执行平台&#xff0c;可让您使用超过300…

Spring Boot中的消息驱动开发

Spring Boot中的消息驱动开发 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨如何在Spring Boot应用中实现消息驱动开发&#xff0c;以提高系统的…

CSS中使用应用在伪元素中的计数器属性counter-increment

在CSS中&#xff0c;counter-increment 是一个用于递增计数器值的属性。它通常与 counter-reset 和 content 属性一起使用&#xff0c;以在文档中的特定位置&#xff08;如列表项、标题等&#xff09;插入自动生成的数字或符号。 counter-increment 基本用法&#xff1a; 使…

Spring Boot中配置Swagger用于API文档

Spring Boot中配置Swagger用于API文档 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨如何在Spring Boot应用中配置Swagger&#xff0c;以便于快…

LeetCode 每日一题 Day 202-209

2663. 字典序最小的美丽字符串(Hard) 如果一个字符串满足以下条件&#xff0c;则称其为 美丽字符串 &#xff1a; 它由英语小写字母表的前 k 个字母组成。 它不包含任何长度为 2 或更长的回文子字符串。 给你一个长度为 n 的美丽字符串 s 和一个正整数 k 。 请你找出并返回一…

多端圈子校园论坛系统源码搭建教程,新手轻松搭建!

圈子社交系统以用户为中心&#xff0c;提供直观易用的界面和流程。用户可轻松注册、浏览内容、加入或创建圈子&#xff0c;并与其他用户互动。系统强化兴趣圈子功能&#xff0c;智能推荐相关圈子。同时确保隐私和安全&#xff0c;采用先进的安全措施保护用户数据。系统需持续优…

《信号与系统》复试建议

目录 第一章 绪论 第二章 连续时间系统的时域分析 第三章 傅立叶变换&#xff08;重点&#xff09; 第四章 拉普拉斯变换&#xff08;重点&#xff09; 第五章 傅立叶变换在通信系统中的应用 第六章 信号的矢量空间分析 第七章 离散时间系统的时域分析 第八章 Z变换与离…

linux rocky9.2系统搭建sqle数据库审核平台

文章目录 前言一、环境准备?二、开始部署前言 关于SQLE SQLE 是由上海爱可生信息技术股份有限公司 开发并开源,支持SQL审核、索引优化、事前审核、事后审核、支持标准化上线流程、原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。 产品特色 支持通过插件的形式扩展…

基于大数据架构的内容安全风控与分析

1 项目介绍 1.1 研究目的和意义 在数字化时代&#xff0c;内容安全成为了互联网企业面临的一个重要挑战。海量数据的产生与传播&#xff0c;伴随着不良信息和网络安全威胁的日益增加。因此&#xff0c;本课题旨在通过构建一个基于大数据架构的内容安全风控与分析系统&#xf…