Mit UFT8 hat das nichts zu tun, sondern es handelt sich um eine Art
URL-Kodierung:
http://de.wikipedia.org/wiki/URL-Kod...25-Darstellung
Versuch's mal mit folgender Funktion:
Delphi-Quellcode:
function UnpackData(const Value: string): string;
var
pSrc,pSrcEnd: PChar;
pDst,pDstBeg: PChar;
begin
SetLength(Result,Length(Value));
if Length(Result) = 0 then
Exit;
pSrc := @Value[1];
pSrcEnd := @Value[Length(Value)];
pDstBeg := @Result[1];
pDst := @Result[1];
while pSrc <= pSrcEnd do
begin
if pSrc^ = '%' then
begin
Inc(pSrc);
HexToBin(pSrc,pDst,2);
Inc(pSrc,2);
end
else
begin
pDst^ := pSrc^;
Inc(pSrc);
end;
Inc(pDst);
end;
SetLength(Result,pDst-pDstBeg);
end;
Diese Funktion ist vollgestopft mit Zeigerarithmetik um eine möglichst hohe Geschwindigkeit zu erzielen.
PS: könnte natürlich sein, dass der dekodierte String in UTF8 kodiert ist. Dann müsste zusätzlich Utf8ToAnsi() oder ähnliches aufgerufen werden.