[Delphi] Zeichenkettenumwandlung (Umlaute, Sonderzeichen) in Htmlentities

Folgende Funktion erledigt das.

function tform1.Escape(const StrToEscape:WideString):String;
var
i:Integer;
w:Word;
begin
Result:='';
for i:=1 to Length(StrToEscape) do
begin
w:=Word(StrToEscape[i]);
if w in [Ord('0')..Ord('9'),Ord('A')..Ord('Z'),Ord('a')..Ord('z')] then
Result:=Result+Char(w)
else if w<=255 then
Result:=Result+'%'+IntToHex(w,2)
else
Result:=Result+'%u'+IntToHex(w,4);
end;
end;

Der Aufruf erfolgt via
escape(zeichenkette_mit_umlaute_oder_sonderzeichen);