// Man kann eine Textdatei auf UTF8 testen, egal ob
// mit BOM oder ohne.


// Getestet mit RS 10.4 unter
Win11

uses System.WideStrUtils; 
 
function IsUTF8(Datei: String): Byte; 
var 
  MS: TMemoryStream; 
  P: PAnsiChar; 
begin 
  Result := 0; 
  MS := TMemoryStream.Create; 
  MS.LoadFromFile(Datei); 
  P := MS.Memory; 
  if System.WideStrUtils.IsUTF8String(P) then 
  begin 
    if System.WideStrUtils.HasUTF8BOM(P) then 
      Result := 2 
    else 
      Result := 1; 
  end; 
  MS.Free; 
end; 
 
// Beispielaufruf 
procedure TForm1.Button1Click(Sender: TObject); 
var 
  Bt: Byte; 
  S: string; 
begin 
  if OpenDialog1.execute then 
  begin 
    Bt := IsUTF8(OpenDialog1.Filename); 
    case Bt of 
      1: 
        S := 'UTF8 ohne BOM'; 
      2: 
        S := 'UTF8 mit BOM'; 
    else 
      S := 'Kein UTF8'; 
    end; 
    ShowMessage(S); 
  end; 
end;


 

Zugriffe seit 6.9.2001 auf Delphi-Ecke