QString,string,char* 在utf8和gbk不同编码下的相互转化

时间:2022-04-01 14:06:29

1. QString 转 string 

1 QString qstr = "测试";
2 string  str = qstr.toStdString();

在qt4中,QString::toStdString() 转的string的编码是Unicode 

需要转unicode编码的string,用toStdString(),需要转utf-8编码的string,用

1 QString qstr = "测试";
2 string  str = qstr.toUtf8().data();

在qt5中,QString::toStdString()转的string的编码是utf-8

需要转unicode编码的string,用

1 QString qstr = "测试";
2 string  str = qstr.toLocal8Bit().data()

需要转utf-8编码的toStdString()

1 QString qstr = "测试";
2 string  str = qstr.toStdString();

 

2. string 转 QString

因为在qt4和再qt5中的QString::fromStdString()的编码格式的改变,转QString略有不同。

在qt4中:utf-8 string 转QString

1 string str = "测试";
2 QString qstr =QString::fromUtf8(str.c_str());

Unicode  string 转 QString

1 string  str = "测试";
2 QString qstr = QString::fromStdString(str);

在qt5中:utf-8 string 转QString

1 string  str = "测试";
2 QString qstr = QString::fromUtf8(str);

Unicode  string 转 QString

1 string  str = "测试";
2 QString qstr = QString::fromStdString(str);

 

3. string 转 char*

1 string str = "测试";
2 char* ch = str.c_str();

4. char* 转 string

1 char* ch = "测试";
2 string str = ch;