Re: Kodowanie tekstu -> "URLEncode"
Napisane: czwartek, 25 lutego 2010, 21:52
Sam natrafiłem na przypadek gdy funkcja nie zadziała. można to oczywiście poprawić:
ale to takie ciągłe łatanie funkcji.
Musiałbym to spokojnie przemyśleć i znaleźć jakieś uniwersalne rozwiązanie. Funkcja z INDY działa niezależnie od tego czy jest to cały adres czy tylko zapytanie, więc jest to do zrobienia.
- Kod: Zaznacz cały
string url_encode(const String sUrl)
{
int p = sUrl.AnsiPos("&q=");
string s1, s2;
string baseUrl;
if(p > 0 || sUrl.SubString(1, 4).LowerCase() != "http")
{
baseUrl = (sUrl.SubString(1, p + 2)).c_str();
s1 = (sUrl.SubString(p + 3, sUrl.Length())).c_str();
char tmp[] = "%XX";
for(string::const_iterator i = s1.begin(); i != s1.end(); ++i)
{
if((*i < 'a' || *i > 'z') && (*i < 'A' || *i > 'Z') &&
(*i < '0' || *i > '9') && !strchr("-_", *i))
{
sprintf(tmp + 1,"%02X",(unsigned char)*i);
s2 += tmp;
}
else s2 += *i;
}
}
else return sUrl.c_str();
return baseUrl + s2;
}
ale to takie ciągłe łatanie funkcji.
Musiałbym to spokojnie przemyśleć i znaleźć jakieś uniwersalne rozwiązanie. Funkcja z INDY działa niezależnie od tego czy jest to cały adres czy tylko zapytanie, więc jest to do zrobienia.