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]);
    }

文章來源:http://www.javashuo.com/article/p-unnhipkw-gw.htmlhtml

相關文章
相關標籤/搜索