我無法找到任何解決方案,我的問題與UTF8字符內編碼的網址,而在Visual Studio中。C++網址解碼,utf8字符錯誤
我有這個URL編碼的字符串:
//Encoded
%5C%CE%A4%CE%B5%CF%83%CF%84%5C
//Decoded
\Τεστ\
在任何網絡編碼器和解碼器的PHP函數上述編碼字符串會給你正確的解碼字符串,但在C++中Visual Studio中的任何嘗試我與解碼網址製作代碼失敗。
我使用Unicode字符集在我的項目,我檢索該編碼的網址爲:(PS我不能改變我接受她的方式 - 這是一個編碼的URL STD:字符串)
std:string EncURL = "%5C%CE%A4%CE%B5%CF%83%CF%84%5C";
我再試試有來自互聯網的許多解碼功能,使其可讀和使用它,但它總是返回我中文字符,而不是正確的。 下面是我嘗試過的許多功能,它只有在編碼的url沒有utf8字符的情況下才有效。
string url_decode(string src){
string ret;
char ch;
int i,ii;
for(i=0; i<src.length(); i++){
if(int(src[i]) == 37){
sscanf(src.substr(i+1,2).c_str(), "%x", &ii);
ch = static_cast<char>(ii);
ret += ch;
i = i+2;
}else{
ret += src[i];
}
}
return (ret);
}
任何人都可以給我一個很好的方法或解決方案,使URLdecoding功能,即使在UTF8字符裏面也能正常工作嗎? 在std:string EncURL無關緊要之後使用任何類型或任何方式,我只需要在C++中爲我接收的字符串提供正確的urldecoder。
----------更新
,我需要轉換的原因是爲了在C中的網址打開或打開文件路徑(文件夾或文件)明顯++,但編碼的URL字符串即將到來的(數據庫,網頁,聊天,文件等等) 所以我需要在utf8中解碼它,因爲我需要糾正非拉丁語部分的多語言目的,然後使用解碼後的utf8字符串原因是需要的。
此更新可能有助於不轉換它只是爲wcout或cout,但它的目標puprose,我真的需要,並沒有任何工作,因爲它應該。
預先感謝您
你如何檢查UTF-8解碼的字符串? Windows本身就是UTF-16,你必須在輸出之前將其轉換爲UTF-16(或者甚至在調試器中查看它)。如果您不轉換它們,UTF-8字符串將顯示爲MBCS。 –
解碼是問題還是你使用'utf8'的地方不是? – Galik
你怎麼知道它失敗?你做了什麼測試?你可以發佈*代碼嗎? – Galik