【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 问题

相关推荐
啊啊啊啊啊!!!!10 小时前
【c++】stack和queue的接口使用以及底层实现
开发语言·c++
上海安当技术12 小时前
C/S 桌面软件怎么接 UKey 强认证?C# SDK 与 C 动态库集成 WinForms/Qt/工控实战
c语言·qt·c#
(Charon)13 小时前
【C++】锁与原子操作(四):自旋锁的完整实现与性能优化
c语言·开发语言·c++
雨田言炎13 小时前
五、Qt控件使用说明大全
开发语言·qt
ShineWinsu14 小时前
对于Linux:五种IO模型以及非阻塞IO的详细解析
linux·c++·面试·io·阻塞·非阻塞·fcntl
呜喵王阿尔萨斯15 小时前
extern “C“ in C++
c语言·c++·算法
乐观勇敢坚强的老彭15 小时前
C++信奥静态数组和动态数组
数据结构·c++·算法
熬夜苦读学习15 小时前
Qt--界面优化
开发语言·qt
gumichef15 小时前
第一章:面向对象核心——类和对象深度讲解
开发语言·c++
ao-weilai15 小时前
C++基础:类和对象
开发语言·c++