De volgende functie converteert (eenvoudige) unicode escape codes in een string. Met deze unicode escape codes bedoel ik codes zoals "u0026" (wat het ampersand of "en" teken is).
Zo geeft, als voorbeeld, een GoogleApis call JSON data terug met een string zoals deze:
u003cbu003eLois u0026amp; Clarku003c/bu003e: The New Adventures of Superman
Maar we zien dat liever in leesbare tekst:
<bu>Lois & Clark</b>: The New Adventures of Superman
De volgende functie doet precies dat. Bedenk wel dat het een erg simpele implementatie is en dat de eerste byte van de escape code genegeerd wordt. We nemen dus aan dat de 2de byte het ASCII karakter is. Dus in het voorbeeld "u0026" kijken we alleen maar naar het nummer "26" wat de hexadecimale waarde 38 is, wat weer het Ampersand teken is (zie Karakter Tabel).
function DecodeUnicodeEscape(const AStr: string): string;
var Nr:integer;
NewStr, OldStr:string;
begin
OldStr:=AStr;
NewStr:='';
while pos('u',OldStr)>0 do
begin
try
Nr:=Hex2Dec(Copy(OldStr, pos('u',OldStr)+2, 4));
NewStr:=NewStr+Copy(OldStr, 0, pos('u',OldStr)-1)+chr(Nr);
oldStr:=Copy(OldStr, pos('u',OldStr)+6, Length(OldStr));
except
// do nothing and be quiet
end;
end;
Result:=NewStr+OldStr;
end;