首先我们在vs编译器下使用中文字符串实验一下:
#include
#include
#include
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString str = "中文测试";
qDebug() << str;
cout << str.toStdString() << endl;
QMessageBox::information(0, "title", str);
return a.exec();
}
现在如果我们在文件中使用中文字符串的话打印出来都是乱码的,因为我们的文件是以GBK编码方式的,而QString内部存储字符串是以UTF-8的方式来的,所以会出现乱码。
我们可以将文件的编码方式修改为utf-8方式编码的即可。
在高级选项中可以进行设置。
但是我们看到使用c++方式打印的字符串乱码,这是由于cout需要是以GBK方式编码的字符串进行打印。
cout << str.toLocal8Bit().toStdString() << endl;
Qt内部其实提供了当我们文件的编码方式为GBK时将字符串转化为UTF-8编码方式赋给QString。
QString str = QString::fromLocal8Bit("中文测试");
#include "widget.h"
#include
#include
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString str = "中文测试";
qDebug() << str;
cout << str.toLocal8Bit().toStdString() << endl;
QMessageBox::information(0, "title", str);
return a.exec();
}