qt 文件保存与读取 文件路径中文乱码问题

采用标准输入输出流保存与读取,toStdString转换qstring与string 但存在中文乱码问题
问题相关代码,请勿粘贴截图

void MapEditor::on_pushButton_12_clicked()//保存地图
{
using namespace std;
QString filename = QFileDialog::getSaveFileName(this, "保存文件", "", "地图文件(*.map2)");//文件扩展名为.map2
if (filename != "")//判断地址是否输入成功
{
ofstream out(filename.toStdString());//转换为标准字符串进行保存
if (out.is_open())
{
out << ui->label_6->text().toStdString() << endl;
out << num1 << ' ' << num2 << endl;
for (int i = 1; i <= num2; i++)
out << P[i].x() << ' ' << P[i].y() << ' ' << Pl[i].toStdString() << endl;//空格隔开
for (int i = 1; i <= num2; i++)
{
for (int j = 1; j <= num2; j++)
out << matrix[i][j] << ' ';
out << endl;
}
for (int i = 1; i <= num1; i++)
out << line[i].a << ' ' << line[i].b << endl;
out << pic.toStdString() << endl;
QMessageBox::information(this, "提示", "保存成功");
out.close();//关闭文档
}
else QMessageBox::information(this, "提示", "保存失败");
}
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

试试在字符串前加上u8
比如
QString filename = QFileDialog::getSaveFileName(this, u8"保存文件", "", u8"地图文件(*.map2)");//文件扩展名为.map2

// QString to stdstring 支持中文
std::string path = path.toLocal8Bit().toStdString();

试过几种方法,这种方法可以解决所有乱码问题:在有乱码的头文件开头加入 #pragma execution_character_set(“utf-8”),如果有多个文件有乱码,你把这行加入全局的头文件中