Home » Tipps & Tricks » Dateien/Verzeichnisse » Textdateien » Unicode-Codierung erkennen
Unicode-Codierung erkennen
Eine mit Unicode kodierte Textdatei enthällt einen Header, die so genannte BOM (ByteOderMark), der angibt um welche konkrete Unicode-Kodierung(UTF8, UFT16BigEndian, etc.) es sich handelt. Die BOM lässt sich wie folgt auslesen:
type
TUnicodeType = (btUTF8, btUTF16BigEndian, btUTF16LittleEndian, btUTF32BigEndian,
btUTF32LittleEndian, btNoUnicode);
...
function GetUnicodeTypeFromFile(AFileName: string): TUnicodeType;
var
stream: TFileStream;
BOM: AnsiString;
begin
stream := TFileStream.Create(AFileName, fmOpenRead);
try
BOM := ' ';
stream.Read(BOM[1], 4);
finally
stream.Free;
end;
if Copy(BOM, 1, 3) = #$EF#$BB#$BF then
Result := btUTF8
else if BOM = #$00#$00#$FE#$FF then
Result := btUTF32BigEndian
else if BOM = #$FF#$FE#$00#$00 then
Result := btUTF32LittleEndian
else if Copy(BOM, 1, 2) = #$FE#$FF then
Result := btUTF16BigEndian
else if Copy(BOM, 1, 2) = #$FF#$FE then
Result := btUTF16LittleEndian
else
Result := btNoUnicode;
end;
