【QT】QSettings读取中文乱码

ops/2024/10/18 16:11:11/

解决QSettings读取中文乱码

    QString sConfigFile = sDataDir + QDir::separator() + "config" + QDir::separator() + "Info.ini";QSettings configFile(sConfigFile, QSettings::IniFormat);configFile.setIniCodec("utf-8");

QSettings存储格式

  • NativeFormat:使用操作系统推荐的存储方式,如Windows的注册表、macOS的plist文件等。
  • IniFormat:将数据保存为INI格式的文本文件。
  • CustomFormat:允许指定自定义的存储格式(如XML、JSON等),但需配合自定义的QSettings backend实现。

在Windows平台,当使用QSettings::NativeFormat时,路径名必须使用"/"作为分隔符

其他方式(未验证)

通过初始化 QTextCodec 来影响整个 Qt 应用程序的编码处理。在应用程序的 main() 函数中,设置默认的文本编解码器为 UTF-8 可以帮助解决乱码问题

#include <QTextCodec>  int main(int argc, char *argv[]) {  QCoreApplication a(argc, argv);  QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));  // ... 其他代码 ...  return a.exec();  
}

QSettings遍历子组

[General]  
AppName=MyApp  
Version=1.0  [UserSettings]  
Username=User123  
Password=pass123  
Language=en  [Advanced]  
DebugMode=false  
LogFile=log.txt  
MaxConnections=10
#include <QCoreApplication>  
#include <QSettings>  
#include <QDebug>  int main(int argc, char *argv[])  
{  QCoreApplication a(argc, argv);  // 初始化QSettings对象,指向example.ini文件  QSettings settings("example.ini", QSettings::IniFormat);  // 获取所有的子组(或称为"sections"或"groups")  QStringList groups = settings.childGroups();  // 遍历所有子组  for (const QString &group : groups) {  // 切换到当前子组  settings.beginGroup(group);  // 打印子组名  qDebug() << "[" << group << "]";  // 获取当前子组下的所有键  QStringList keys = settings.allKeys();  // 遍历所有键,并打印其值  for (const QString &key : keys) {  // 读取并打印键值对  qDebug() << key << "=" << settings.value(key).toString();  }  // 结束当前子组,返回到根组  settings.endGroup();  // 打印一个空行作为分隔符  qDebug() << "";  }  return a.exec();  
}

http://www.ppmy.cn/ops/48675.html

相关文章

【论文阅读】Activity Recognition using Cell Phone Accelerometers

Activity Recognition using Cell Phone Accelerometers 引用&#xff1a; Kwapisz J R, Weiss G M, Moore S A. Activity recognition using cell phone accelerometers[J]. ACM SigKDD Explorations Newsletter, 2011, 12(2): 74-82. 论文链接&#xff1a; Activity recogn…

注册中心理论学习

注册中心介绍 注册中心&#xff08;也称为服务注册中心或服务发现服务&#xff09;是微服务架构中的一个关键组件&#xff0c;它负责服务的注册与发现。在微服务体系中&#xff0c;服务实例的数量和位置是动态变化的&#xff0c;注册中心提供了一个集中的地方来存储这些信息&a…

Mysql5.7安装教程(详细图解教程)_mysql5.7下载

本文讲解的是mysql5.7安装包、mysql5.7下载、mysql5.7安装配置教程、离线安装mysql5.7。MySQL 5.7 是 MySQL 数据库的一个重要版本&#xff0c;它引入了许多新特性和改进&#xff0c;旨在提高性能、安全性和易用性。 MySQL 5.7 在所有负载模型上都有显著的性能改进&#xff0c…

嵌入式硬件VS软件,到底哪个更难?

在嵌入式系统开发中&#xff0c;硬件和软件是密不可分的两个方面。但是&#xff0c;究竟是硬件开发更具挑战性&#xff0c;还是软件开发更难以应对呢&#xff1f;本文将就这一问题展开讨论&#xff0c;探究嵌入式硬件和软件在开发过程中的各种挑战与特点。 一、硬件开发&#…

C++程序员笔试训练

面试题1&#xff1a;使用库函数将数字转换位字符串 考点&#xff1a;c语言库函数中数字转换位字符串的使用 char *gcvt(double number, int ndigit, char *buf);参数说明&#xff1a; number&#xff1a;待转换的double类型数值。 ndigit&#xff1a;保留的小数位数。 buf&am…

Jetson AGX Orin基于BlueZl蓝牙协议栈AOJ红外蓝牙体温计开发(低功耗蓝牙ble)

一、准备工作 安装blueZ以及相关的蓝牙测试工具&#xff1a; sudo apt update sudo apt install bluez sudo apt install bluez-hcidump然后看下蓝牙设备是否识别到&#xff0c;已经是否处于开启状态&#xff1a; roottest-desktop:~# hciconfig -a hci0: Type: Primary …

开源AI大模型项目推荐

开源项目一直以来都是技术社区的重要组成部分&#xff0c;它们不仅促进了技术的创新和共享&#xff0c;也为无数开发者提供了学习和成长的平台。以下是几个当前热门且值得关注的开源大模型项目&#xff0c;希望能激发你的兴趣&#xff1a; 1. Hugging Face Transformers 简介…

flask部署mtcnn

目录 打印人脸检测信息 输出结果 保存检测结果 浏览器查看nginx&#xff08;nginx配置这里就不多介绍了&#xff09; url图片检测人脸 输出结果 Flask hello-world Flaskmtcnn python调flaskmtcnn 打印人脸检测信息 import cv2 from mtcnn.mtcnn import MTCNNimg cv2.c…