【QT】包含中文的QString转换为std::string乱码问题

问题描述

在开发过程中需要用到QStringList file_names = QFileDialog::getOpenFileNames()读取文件,并通过QString::toStdString()方法转换为std::string类型进行后续的使用,但是我发现当文件名包含中文的时候,QString没问题,但是转换为std::string之后就会乱码,如下所示。

cpp 复制代码
 QString qstr = "测试.jpg";
 qDebug() << qstr;  // 测试.jpg
 std::string str = qstr.toStdString();
 cout << str << endl;  // 娴嬭瘯.jpg

解决方法

参考了一些链接,找到了可行方案,即使用QTextCodec::codecForName("gb18030")->fromUnicode(qstr).data();方法,其中qstr表示包含中文的QString变量。

代码如下:

cpp 复制代码
QString qstr = "测试.jpg";
qDebug() << qstr;  // 测试.jpg
std::string str1 = QTextCodec::codecForName("gb18030")->fromUnicode(qstr).data();
cout << str1 << endl;  // 测试.jpg

参考链接

QT 中 QString 中文转std::string 问题

相关推荐
-西门吹雪14 小时前
现代C++ 并发编程-学习指南
java·jvm·c++
m0_5870989915 小时前
Qt,二进制文件读写建议
开发语言·qt
秋田君15 小时前
QT_QT信号与槽机制
开发语言·数据库·qt
辞旧 lekkk15 小时前
【Qt】 系统相关:事件与定时器
开发语言·qt·学习·萌新
HAPPY酷15 小时前
【ROS2】VMware + Docker 运行 Gazebo 崩溃与“假死”排查实录
qt·docker·容器
aaPIXa62216 小时前
C++ TensorRT Edge-LLM 边缘推理框架:从原理到实战
开发语言·c++·edge
nianniannnn17 小时前
c++复习自存--标准模板库STL
开发语言·c++·windows
努力努力再努力wz18 小时前
【高性能网络库与HTTP Server系列】:基于主从 Reactor 模型实现高性能 C++ 网络库与 HTTP Server
开发语言·网络·数据结构·数据库·c++·网络协议·http
Robot_Nav18 小时前
C++ 面试常问问题汇总:基础语法、面向对象、STL、多线程与设计模式
c++·设计模式·面试
一拳一个呆瓜18 小时前
【STL】iostream 编程:使用插入运算符并控制格式
c++·stl