[gelöst] UTF8 finden ungültiger Zeichen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

[gelöst] UTF8 finden ungültiger Zeichen

Beitrag von Michl »

Ein fröhliches Hallo in die Runde!

Beim parsen diverser größerer UTF8-Texte, habe ich festgestellt, dass diese gelegentlich ungültige Zeichen enthalten. Mir würde es genügen, diese Zeichen zu entfernen.

Gibt es eine fertige Pascal-Methode (à la UTF8CharValid), die solche Zeichen aufspüren kann? Ich konnte bisher leider keine finden.

Sonst würde ich dieses Beispiel übersetzen und testen. Ich wollte aber erstmal fragen, ob ich nicht einfach nur nicht mit den richtigen Begriffen gesucht habe.

Danke

Michael
Zuletzt geändert von Michl am So 19. Apr 2015, 18:36, insgesamt 1-mal geändert.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: UTF8 finden ungültiger Zeichen

Beitrag von theo »

Gibt alles mögliche in unit LazUTF8 z.B. UTF8FixBroken();

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: UTF8 finden ungültiger Zeichen

Beitrag von Michl »

Super danke!

Werde mal testen, ob es mit UTF8FixBroken schon funktioniert!

IMHO sollte in

Code: Alles auswählen

procedure UTF8FixBroken(var S: string);
begin
  if S='' then exit;
  if FindInvalidUTF8Character(PChar(S),length(S))<0 then exit;
...
das FindInvalidUTF8Character genau das sein, was ich ursprünglich suchte.

Werde mal testen, ob es passt :D

Vielen Dank nochmal (hatte ich bei meiner vorherigen Durchsicht irgendwie nicht gesehen). :wink:

EDIT: Mein Testprogramm, mit diversen mir Probleme bereitenden Texten, funktioniert tadellos mit UTF8FixBroken. :D :D :D

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Antworten