首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

GB2313的URL编码怎么转换为中文

2013-03-04 
GB2313的URL编码如何转换为中文%CE%D2%C3%C7 //中文为:我们GB2312的URL编码怎么用QT转换成中文呢编码[解决

GB2313的URL编码如何转换为中文


%CE%D2%C3%C7 //中文为:我们
GB2312的URL编码  怎么用QT转换成中文呢

编码
[解决办法]
需要将gb2312转换为utf8(Qt的默认编码方式)
    QString gb2312str = "%CE%D2%C3%C7";

    QTextCodec *codec = QTextCodec::codecForName("gb2312");
    QString msg = codec->toUnicode(QByteArray::fromHex(gb2312str.toLocal8Bit()));
    qDebug()<<msg;

以上代码在ubuntu下测试通过。
[解决办法]
std::string urlDecode(const std::string& _szToDecode)  
{
std::string result;  
int hex = 0;  

for (size_t i = 0; i < _szToDecode.length(); ++i)  
{  
switch (_szToDecode[i])  
{  
case '+':  
result += ' ';  
break;  
case '%':  
if (isxdigit(_szToDecode[i + 1]) && isxdigit(_szToDecode[i + 2]))  
{  
std::string hexStr = _szToDecode.substr(i + 1, 2);  
hex = strtol(hexStr.c_str(), 0, 16);  

//字母和数字[0-9a-zA-Z]、一些特殊符号[$-_.+!*'(),] 、以及某些保留字[$&+,/:;=?@]  
//可以不经过编码直接用于URL  
if (!((hex >= 48 && hex <= 57) 
[解决办法]
 //0-9  
(hex >=97 && hex <= 122) 
[解决办法]
   //a-z  
(hex >=65 && hex <= 90)       //A-Z  

////一些特殊符号及保留字[$-_.+!*'(),]  [$&+,/:;=?@]  
//hex == 0x21 
[解决办法]
 hex == 0x24 
[解决办法]
 hex == 0x26 
[解决办法]
 hex == 0x27 
[解决办法]
 hex == 0x28 
[解决办法]
 hex == 0x29  
//
[解决办法]
 hex == 0x2a 
[解决办法]
 hex == 0x2b
[解决办法]
 hex == 0x2c 
[解决办法]
 hex == 0x2d 
[解决办法]
 hex == 0x2e 
[解决办法]
 hex == 0x2f  


//
[解决办法]
 hex == 0x3A 
[解决办法]
 hex == 0x3B
[解决办法]
 hex == 0x3D 
[解决办法]
 hex == 0x3f 
[解决办法]
 hex == 0x40 
[解决办法]
 hex == 0x5f  
))  
{  
result += char(hex);  
i += 2;  
}  
else 
result += '%';  
}
else 
{  
result += '%';  
}  
break;  

default:  
result += _szToDecode[i];  
break;  

}  
}  

return result;  

热点排行