我无法找到任何解决方案,我的问题与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