使用getSaveFileName遇到的中文乱码问题

大树学长 2019-11-18 10:37:46
1、我是WIN10+Qt Creator 4.3.1
Based on Qt 5.9.0 (MSVC 2015, 32 bit)
2、文件编码,默认编码为UTF-8


使用QFileDialog::getSaveFileName生成的文件,如果是中文名就会是乱码,网上的方法都试过了不行,还是乱码
主函数中添加:QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));什么的都不行
有没有人遇到我这种情况,这不知道应该怎么解决
...全文
568 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
走好每一步 2019-11-18
  • 打赏
  • 举报
回复
你先单步,看下显示会乱码不,我这里试了,并没有发现你所说的情况
走好每一步 2019-11-18
  • 打赏
  • 举报
回复
void Dialog::on_pushButton_2_clicked()
{
    QString fileName = QFileDialog::getSaveFileName(this,
                tr("Save"),
                tr(""),
                tr("*.wav"));


    QFile file(fileName);
    file.open(QFile::WriteOnly);
    file.write("abc");
    file.close();
}
大树学长 2019-11-18
  • 打赏
  • 举报
回复
引用 4 楼 走好每一步 的回复:
tr是多国语言翻译的意思,不是转编码的,不需要多国语言时,就不要tr 还是没明白你说的乱码指的是什么,完整的代码有吗? 明明白白的解释,你所说的乱码指的是file乱码,还是哪里乱码了?
就是使用QFileDialog::getSaveFileName这个生成的文件,如果输入中文名称,生成的文件名称就是乱码
走好每一步 2019-11-18
  • 打赏
  • 举报
回复
tr是多国语言翻译的意思,不是转编码的,不需要多国语言时,就不要tr 还是没明白你说的乱码指的是什么,完整的代码有吗? 明明白白的解释,你所说的乱码指的是file乱码,还是哪里乱码了?
大树学长 2019-11-18
  • 打赏
  • 举报
回复
tr改成QString::fromLocal8Bit还是乱码,网上查的方法度试过了,生成的名称都是乱码
大树学长 2019-11-18
  • 打赏
  • 举报
回复
引用 1 楼 走好每一步 的回复:
电脑不会乱码,只有人会乱码,你先上代码吧
file = QFileDialog::getSaveFileName(this, tr("Save"), tr(""),//生成文件名称乱码 tr("*.wav"));
走好每一步 2019-11-18
  • 打赏
  • 举报
回复
电脑不会乱码,只有人会乱码,你先上代码吧
大树学长 2019-11-18
  • 打赏
  • 举报
回复 1
引用 6 楼 走好每一步 的回复:
void Dialog::on_pushButton_2_clicked()
{
    QString fileName = QFileDialog::getSaveFileName(this,
                tr("Save"),
                tr(""),
                tr("*.wav"));


    QFile file(fileName);
    file.open(QFile::WriteOnly);
    file.write("abc");
    file.close();
}
找到原因了,是QString转换到string出了问题,不能用toStdString()转换,要先转换为QByteArray,再转换为string

16,815

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧