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

相关推荐
于小猿Sup10 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
小小编程路12 小时前
C++ 多线程与并发
java·jvm·c++
程序leo源13 小时前
Qt窗口详解
开发语言·数据库·c++·qt·青少年编程·c#
zh_xuan14 小时前
解决VS Code 控制台中文乱码
c++·vscode·乱码
郭涤生14 小时前
飞凌 RK3588 开发板同显 / 异显模式切换
c++·rk3588
计算机安禾14 小时前
【c++面向对象编程】第38篇:设计原则(二):里氏替换、接口隔离与依赖倒置
开发语言·c++
我在人间贩卖青春15 小时前
重学Qt——事件处理
qt
code_whiter15 小时前
C++1进阶(继承)
开发语言·c++
小宋00115 小时前
QT中控件qss样式修改
开发语言·qt
智者知已应修善业15 小时前
【51单片机LED闪烁10次数码管显示0-9】2023-12-14
c++·经验分享·笔记·算法·51单片机