版权声明:本文为博主原创文章,未经博主允许不得转载,博客地址:http://blog.csdn.net/mars_xiaolei。 https://blog.csdn.net/mars_xiaolei/article/details/88416420
问题
Qt号称可以翻译国际语言,貌似对中文并不友好,只要路径包含中文,由于编码格式不一样,就可能会成为乱码,导致程序找不到路径。拿Qt新建项目来说,它的项目名称就不支持中文,这个问题一直没有被解决,可能是Qt的开发人员太懒了,懒得改,然后一遇到中文路径,就得去转一次码,有些转码函数还不好用,难受啊!由于我把编码格式改为了UTF-8,所以很长时间都没有遇到中文问题,最近发现了OpenCV中imread()函数和imwrite()函数路径也不能包含中文,一直觉得不太可能是中文问题,但还是发生了。
解决方法
1、添加头文件(转码)
#include <QTextCodec>//转码
2、关键代码
string strPath="";
strPath=saveImagePath.toLocal8Bit().toStdString();//QString转Local8Bit再转String
解析:用Qt获取到的是QString类型的字符串,需要先使用toLocal8Bit()函数转换成Local8Bit,也就是本地8位,由于OpenCV中imread()函数和imwrite()函数中使用的是string类型的字符串,因此还要继续使用toStdString()函数转换成C++中的string类型字符串。