33.QT-UTF8,GBK互转

    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));    //设置本地编码对象
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));  //设置QString编码对象

     //utf8向gdk转换的过程是utf8->unicode, unicode->gdk
     //在PC,Unicode一般代表utf-16,而utf-8是单独列出来的
     //啊的gbk编码: 0xB0A1            啊的utf8编码:0xE5958A
     //哈的gbk编码: 0xB9FE            哈的utf8编码:0xE59388

    char encode[6]={0xe5,0x95,0x8A,0xE5,0x93,0x88};             //啊哈 utf-8编码
    QTextCodec *utf8=QTextCodec::codecForName("UTF-8");       //获取UTF-8编码对象
    QString  unicode =utf8->toUnicode(encode,6);               //通过UTF-8编码对象将啊哈转为utf-16

    QTextCodec *gbk=QTextCodec::codecForName("GBK");          //获取GBK编码对象
    QByteArray arr=gbk->fromUnicode(unicode);                   //从Unicode编码转为自身编码类型(GBK)
    qDebug()<<QString::fromLocal8Bit(arr);                     //打印GBK码

    qDebug()<<arr.size();
    for(int i=0; i <arr.size();i++)
    {
        qDebug("%x",(unsigned char)arr[i]);
    }

文章来源:https://www.cnblogs.com/lifexy/p/9272781.html

posted @ 2018-09-20 12:23  康永年  阅读(461)  评论(0)    收藏  举报
友情链接:回力 | 中老年女装 | 英语口语培训 | 托福培训 | 雅思周末班