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