QT打开文件路径中含有中文和空格问题
2018-09-01 05:38:11来源:博客园 阅读 ()
使用qt-mingw版做的软件,发给客户以后说工作不正常,配置文件无法打开,或者加载数据文件不正常。远程查看以后,发现客户经常将程序放置在中文带空格的路径下,导致文件打开不正常。所以最近想在程序上解决一下,让客户少出问题。
首先在网上查了QT打开文件路径中含有中文和空格问题,抄了如下代码:(https://blog.csdn.net/m0_37906001/article/details/76672634)
1 QString fileName=QFileDialog::getOpenFileName(this,tr("Open Image"),".",tr("Image Files(*.png *.jpg *jpeg *.bmp *.avi *.mp4)")); 2 3 QTextCodec *code = QTextCodec::codecForName("GB2312");//解决中文路径问题 4 std::string name = code->fromUnicode(fileName).data(); 5 6 if(fileName.isEmpty()) 7 { 8 return; 9 } 10 11 inputVideo.open(name);//我准备打开的是本地视频文件
非常简单于是就加在自己代码里了:
1 if(ui->bt_replay->text()=="回放") 2 { 3 auto name=QFileDialog::getOpenFileName(0,"","","pcap文件(*.pcap)"); 4 QTextCodec *code = QTextCodec::codecForName("gb2312");//解决中文路径问题 5 name = code->fromUnicode(name).data(); 6 cout<<"convert gb2312:"<<name.toStdString()<<endl; 7 if(name!="") 8 { 9 10 lctrl.replay_dat(name.toStdString()); 11 ui->bt_replay->setText("退出回放"); 12 lctrl.replay_stat=1; 13 ui->lb_replay_stat->setText("加载数据"); 14 } 15 }
结果不行。认为是编码问题,换了编码,加了编码成功的判断,无论如何也不行,但是在网上搜到的代码都非常简单。
最后发现,QString的存储是按Unicode存的,输入的时候会把输入数据转换成Unicode,转码方式默认是Latin-1,导致转码以后的文件名又被转回去了,而且转的还不对
于是使用std::string解决这个问题:
1 if(ui->bt_replay->text()=="回放") 2 { 3 auto name=QFileDialog::getOpenFileName(0,"","","pcap文件(*.pcap)"); 4 QTextCodec *code = QTextCodec::codecForName("gb2312");//解决中文路径问题 5 string namestd = code->fromUnicode(name).data(); 6 cout<<"convert gb2312:"<<namestd<<endl; 7 if(namestd!="") 8 { 9 lctrl.replay_dat(namestd); 10 ui->bt_replay->setText("退出回放"); 11 lctrl.replay_stat=1; 12 ui->lb_replay_stat->setText("加载数据"); 13 } 14 }
对于路径中存在空格的,在网上查的解决方法是:path.replace(" ","\" \"");
结果试了不行,最后发现,fopen本身就支持带空格的文件名输入,不需要转换……
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:华为机试 提取不重复的整数
下一篇:华为机试 取近似值
- QT5 解析JSON文件 2020-06-09
- QTableView与Excel之间的文件打开与保存 2020-05-26
- C++ 文件输入输出 2020-03-27
- [C++]HelloWorld背后的故事!总结一下在我们运行exe可执行文 2020-03-27
- 标准输入重定向到文件后,如何连续读入,如何判断标准输入流 2020-03-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash