Qt/C++將web網頁POST發送的數據轉換成正常字符

最近在做一個用Qt接收從web網頁POST發送過來的數據,發現如果網頁發送的數據帶有漢字,則接收到後沒有正常顯示爲漢字,而是以%XX的十六進制形式顯示了,因此琢磨出如下方式,可以將接收的十六進制數據轉成正常顯示的漢字,方法如下:
std::string UrlDecode(std::string &SRC)
{
	std::string ret;
	char ch;
	int code;
	for (int i = 0; i < SRC.length(); i++) {
		if (int(SRC[i]) == 37) {
			sscanf(SRC.substr(i + 1, 2).c_str(), "%x", &code);
			ch = static_cast<char>(code);
			ret += ch;
			i = i + 2;
		}
		else {
			ret += SRC[i];
		}
	}
	return (ret);
}

用如下方法進行測試,結果正常返回了網頁輸入的漢字:
main(int argc, char* argv[])
{
	//輸入字符爲:121@1
	//轉換爲URL字符後爲:121%401
	std::string inStr = "121%401";  
    cout << "inStr:" << inStr << endl; 
    std::string str = UrlDecode(inStr);  
    cout << "outStr:" << str << endl; 
	
	//輸入字符爲:121中1
	//轉換爲URL字符後爲:121%E4%B8%AD1
	inStr = "121%E4%B8%AD1";  
    cout << "inStr:" << inStr << endl; 
    str = UrlDecode(inStr); 
	//這裏需要將其轉換
    QString qOutStr = QString::fromStdString(str);
	
	
	//輸入字符爲:121中國1
	//轉換爲URL字符後爲:121%E4%B8%AD%E5%9B%BD1
	inStr = "121%E4%B8%AD%E5%9B%BD1";  
    cout << "inStr:" << inStr << endl; 
    std::string str = UrlDecode(inStr);  
    //這裏需要將其轉換
    QString qOutStr = QString::fromStdString(str);
}

以上方法,僅供參考。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章