HBufC* CUrlUtil::UrlEncodeL(TDesC& aUrl)
{
_LIT(KFormatCode, "%%%02x");
if (!aUrl.Length())
{
return NULL;
}
TBufC<100> dontEncode = _L("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!-_.()*;/?:@&=+$[]!\\'()~");
HBufC *encoded = HBufC::NewL(aUrl.Length() * 3);
for (TInt i=0; i<aUrl.Length(); i++)
{
TChar toFind = aUrl[i];
if (KErrNotFound == dontEncode.Locate(toFind) )
{
encoded->Des().AppendFormat(KFormatCode, toFind);
}
else
{
encoded->Des().Append(toFind);
}
}
encoded->ReAllocL(encoded->Length());
return encoded;
}