C URL用UTF8字符错误解码

C++ URL decode with utf8 characters error

本文关键字:错误 解码 字符 UTF8 URL      更新时间:2023-10-16

我可以在C Visual Studio中的编码URL中找到我的问题的任何解决方案。

我有此URL编码的字符串:

//Encoded
%5C%CE%A4%CE%B5%CF%83%CF%84%5C
//Decoded
Τεστ

在任何在线编码器和使用PHP函数的解码器中,上面编码的字符串将为您提供解码的正确字符串,但是在C Visual Studio中,我使用解码URL代码进行的任何尝试失败了。

我在项目中使用Unicode字符设置,然后将此编码的URL检索为:( P.S.我无法更改接收方式 - 它是一个编码的URL std:string(

(
std:string EncURL = "%5C%CE%A4%CE%B5%CF%83%CF%84%5C";

然后,我尝试使用Internet的许多解码功能使其可读并使用它,但它总是会返回我的汉字而不是正确的角色。以下是我尝试过的许多功能,并且仅当编码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);
}

有人会给我一个很好的方法或解决方案,即使内部有UTF8字符也可以正常工作?std之后使用的任何类型或任何方法:字符串concurl无关紧要,我只需要在C 中适当地urldecoder,用于c 我收到的字符串。

------------更新

我需要转换的原因是从C 内部进行URL打开或FilePath打开(文件夹或文件(的原因,但是编码的URL字符串正如应用程序外部的C 内部编码(数据库,Web,web,Chat,Chat,Chat,文件等(因此,我需要在UTF8中对其进行解码,因为我需要为多语言目的纠正该非拉丁部分,然后出于需要的原因而使用解码的UTF8字符串。

此更新可能有助于仅用于WCOUT或COUT,但对于我的目标puprose而言,我确实需要它,但尚无应有的工作。

预先感谢您

我会回答我的问题,因为我找到了解决方案,并且其他任何人都使用std :: string,并且想要使utf8字符正确。

解决方案是将编码的URL STD :: String转换为STD :: WSTRING,然后使用任何UrldeCoder解码WSTRING。解码的WSTRING始终是正确的,如PHP在线URL编码和解码中所述。因此,您可以根据自己的意愿使用解码的WSTRING。

即使在Windows Console应用程序中,您也可以使用输出Messabox使用WSTRING查看正确的输出