QString 互转 char*
今天,抽时间做了一下qstring和char*互转的实验,把结果列出来,然后再把自己的建议写出来。
msvc64 使用2015
建议:
1、使用mingw32,源文件格式使用utf8,
2、使用msvc64-2015,元文件格式使用utf8-bom,
QString转char*使用
QString strChinese1 = "中午中文";//正常 std::string stdStr = strChinese1.toStdString();//正常 const char* ch = stdStr.c_str();//正常
char* 转 QString使用
char sz[100] = {"中为首的12324352342"};
QString str1 = QString("%1").arg(sz);//正常
QString str3 = QString::fromUtf8(sz);//正常
测试过程:
QString 转 char*
QString 转 char* msvc2015 64 文件utf8 QString strChinese1 = "中午中文";//显示乱码 std::string stdStr = strChinese1.toStdString();//乱码 const char* ch = stdStr.c_str();//乱码 QString strChinese2 = "中午中文sdfsdf水电费看见了";//乱码 QByteArray by = strChinese2.toLocal8Bit();//乱码 char* ch1 = by.data();//正常 QString strChinese3 = "中午中文sdfsdf水电";//乱码 QByteArray by1 = strChinese2.toLatin1();//乱码 char* ch2 = by1.data();//乱码 mingw32 文件utf8 QString strChinese1 = "中午中文";//正常 std::string stdStr = strChinese1.toStdString();//正常 const char* ch = stdStr.c_str();//正常 QString strChinese2 = "中午中文sdfsdf水电费看见了";//正常 QByteArray by = strChinese2.toLocal8Bit();//乱码 char* ch1 = by.data();//乱码 QString strChinese3 = "中午中文sdfsdf水电";//正常 QByteArray by1 = strChinese2.toLatin1();//乱码 char* ch2 = by1.data();//乱码 msvc2015 64 文件utf8 bom QString strChinese1 = "中午中文";//正常 std::string stdStr = strChinese1.toStdString();//正常 const char* ch = stdStr.c_str();//正常 QString strChinese2 = "中午中文sdfsdf水电费看见了";//乱码 QByteArray by = strChinese2.toLocal8Bit();//乱码 char* ch1 = by.data();//乱码 QString strChinese3 = "中午中文sdfsdf水电";//正常 QByteArray by1 = strChinese2.toLatin1();//乱码 char* ch2 = by1.data();//乱码 mingw32 文件utf8 bom QString strChinese1 = "中午中文";//正常 std::string stdStr = strChinese1.toStdString();//正常 const char* ch = stdStr.c_str();//正常 QString strChinese2 = "中午中文sdfsdf水电费看见了";//正常 QByteArray by = strChinese2.toLocal8Bit();//乱码 char* ch1 = by.data();//乱码 QString strChinese3 = "中午中文sdfsdf水电";//正常 QByteArray by1 = strChinese2.toLatin1();//乱码 char* ch2 = by1.data();//乱码
char* 转 QString
char* 转 QString msvc 64 文件utf8 bom char sz[100] = {"中为首的12324352342"}; QString str1 = QString("%1").arg(sz);//正常 QString str2 = QString::fromLocal8Bit(sz);//乱码 QString str3 = QString::fromUtf8(sz);//正常 mingw32 文件 utf8 bom char sz[100] = {"中为首的12324352342"}; QString str1 = QString("%1").arg(sz);//正常 QString str2 = QString::fromLocal8Bit(sz);//乱码 QString str3 = QString::fromUtf8(sz);//正常 mingw32 文件 utf8 char sz[100] = {"中为首的12324352342"}; QString str1 = QString("%1").arg(sz);//正常 QString str2 = QString::fromLocal8Bit(sz);//乱码 QString str3 = QString::fromUtf8(sz);//正常 msvc64 utf8 文件 utf8 bom char sz[100] = {"中为首的12324352342"}; QString str1 = QString("%1").arg(sz);//正常 QString str2 = QString::fromLocal8Bit(sz);//乱码 QString str3 = QString::fromUtf8(sz);//正常