QtCreator中文乱码的解决方案
原则:QT内部统一采用Unicode编码(UTF-16)的形式进行数据存储,所以保存至QString的数据要保证按照相应的编码保存至Unicode内存中;qDebug()的时候也会统一按照Unicode的方式进行数据的输出。
1、建立Qt工程时,首先确保编辑器的编码在GBK18030的编码下;
2、用QString 保存数据,并以本地编码的方式来进行解析成Unicode,来进行测试是否读取成功:
QString tmpStr= QString::fromLocal8Bit("贤哥");
qDebug()<<tmpStr;
qDebug()<<"str = "<<str<<" array="<<array.size()<<" array="<<array.toHex();
//输出:str = "贤" array= 3 array= "e8b4a4"
3、可以通过QString->qbyearray 的方式转换成所需要的编码
QByteArray array = str.toUtf8();
qDebug()<<array; //可以查看utf-8的16进制编码
4、可以将数据转换成 char*
const char *arr = array.constData();
5、可以将char* 或者 qbyteArray转换成QString 来进行验证(从UTF-8转换成Unicode)
QString str2 = QString::fromUtf8(array);
qDebug()<<"str2 = "<<str2;
QString str3 = QString::fromUtf8(arr);
qDebug()<<"str3 = "<<str3;