Qt设置为GBK/System编码时,QString转char*乱码问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gongjianbo1992/article/details/80501472

这个问题以前遇到过,结果后来忘了,今天遇到中文路径用FILE写文件,结果文件名乱码。
(我服了,这个破在线编辑器,几段文字我格式折腾半天,还把网页卡死两次)。
错误方式:
//QString str=QString::fromLocal8Bit("中文");
//const char* cstr=str.toStdString().c_str();
//这样qDebug可以打印出来,但写文件是乱码

QString转换char*正确方式:
QString str=QString::fromLocal8Bit("中文");//我QtCreator本地设置的是System/GBK
QByteArray arr= str.toLocal8Bit();  //我不知道为嘛非要有中间变量,搞得我一直没弄对
onst char *cstr = arr.data();//这样虽然qDebug()打印是问号,但是可以正常用了
FILE *fp;
fp=fopen(cstr,"w+");
char arr[]="test";
fwrite(arr,strlen(arr),1,fp);
fclose(fp);

 
 
 
 
 
 
 
 

猜你喜欢

转载自blog.csdn.net/gongjianbo1992/article/details/80501472
今日推荐