Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.



Deel:
Meldingen
Alles wissen

[Opgelost] Lazarus/Delphi - Decodeer Unicode Escape codes in een string

1 Berichten
1 Gebruikers
0 Reactions
2,055 Bekeken
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2869
Topic starter  

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 &amp; 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;                 

   
BeantwoordenCiteren
Deel: