当前位置: 代码迷 >> QT开发 >> GB2313的URL编码怎么转换为中文
  详细解决方案

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

热度:75   发布时间:2016-04-25 04:04:55.0
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  
  相关解决方案