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;