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);//正常

 

posted @ 2022-07-08 11:14  阳光下的小土豆  阅读(1587)  评论(0编辑  收藏  举报