Мне нужно декодировать URI на C++. Я нашел несколько вопросов об этом, но все они не имеют отношения к кодировке и акцентам UTF-8 (меня интересует точная обработка символов ASCII).Как декодировать URI с символами UTF-8 в C++
Затем я пошел с широко используемой библиотекой, такой как libcurl ... но также не смог обработать кодировку UTF-8. Вот что я делаю
string UriHelper::Decode(const string &encoded)
{
CURL *curl = curl_easy_init();
int outlength;
char *cres = curl_easy_unescape(curl, encoded.c_str(), encoded.length(), &outlength);
string res(cres, cres + outlength);
curl_free(cres);
curl_easy_cleanup(curl);
return res;
}
Проблема заключается в том, что a%C3%A1e%C3%A9i%C3%ADo%C3%B3u%C3%BA
получает декодируется как aáeéiÃoóuú
, когда он должен быть aáeéiíoóuú
. Если я использую a%E1e%E9i%EDo%F3u%FA
, он работает отлично.
Есть ли какая-нибудь библиотека, которая может позаботиться о по-разному закодированных URI и справиться с ними?
Спасибо!
быстрое примечание: Ваш код не является исключением безопасной, ни это MT-сейф –