首页 > 代码库 > Qt中gb2312/GBK的URL编解码函数

Qt中gb2312/GBK的URL编解码函数

编码函数:

QByteArray encodeURI(QString str){    QByteArray array;    QTextCodec *codec=QTextCodec::codecForName("GBK");    QByteArray tmpArray;    tmpArray = codec->fromUnicode(str);    for(int i=0,size = tmpArray.length();i<size;i++){        char ch = tmpArray.at(i);        if((ch>=0&&ch<=9)||(ch>=a&&ch<=z)||(ch>=A&&ch<=Z)){            array.append(ch);        }else{            uchar low = ch & 0xff;            char c[3];            sprintf(c,"%02X",low);            array.append("%").append(c);        }    }    return array;}

 

解码函数:

QString decodeURI(QString str){    QByteArray array;    for(int i=0; i<str.length();) {        if (0==QString::compare(str.mid(i,1), QString("%"))) {            if ((i+2)<str.length()) {                array.append(str.mid(i+1,2).toShort(0,16));                i=i+3;            }            else{                array.append(str.mid(i,1));                i++;            }        }        else{            array.append(str.mid(i,1));            i++;        }    }    QTextCodec *code=QTextCodec::codecForName("GBK");    return code->toUnicode(array);}

Qt中gb2312/GBK的URL编解码函数