// 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;
|