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

相关推荐
weixin_307779132 分钟前
C++进程监视器与自动启动程序
开发语言·c++·算法
草莓熊Lotso22 分钟前
【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day12
c语言·开发语言·c++·刷题
用户7227868123441 小时前
C++ 使用分治减小模板递归深度
c++
尘世闲鱼2 小时前
移动零【三种思路】
c++·leetcode
ALex_zry2 小时前
将C++资源管理测试框架整合到GitLab CI/CD的完整实践指南
c++·ci/cd·gitlab
春蕾夏荷_7282977254 小时前
qt ElaWidgetTools第一个实例
开发语言·qt
编啊编程啊程8 小时前
JUC之AQS
java·开发语言·jvm·c++·kafka
jingfeng51411 小时前
C++模板进阶
java·c++·算法
头发掉光的程序员11 小时前
第七章 利用Direct3D绘制几何体
c++·windows·图形渲染·direct12
韭菜钟11 小时前
在Qt中用cmake实现类似pri文件的功能
开发语言·qt·系统架构