텍스트 파일은 파일시작부분의 2바이트를 읽어 유니코드인지 구분이 가능하다.
파일시작부분의 2바이트가 $FEFF 나 $FFFE 일 경우 유니코드 텍스트파일이다.
아래는 파일이름으로 유니코드인지 판별하는 함수
: 유니코드이면 True 아니면 False 를 반환
function IsUnicodeTextFile(const fileName: String): Boolean;
var
fd: THandle;
ByteOrderMarker: Word;
begin
Result:=False;
{1. 파일을 열어 2바이트만 읽어들인다}
fd:=FileOpen(fileName, fmOpenRead);
FileRead(fd, ByteOrderMarker, 2);
{2.파일시작부분의 2바이트가
$FEFF(Little Endian) 혹은 $FFFE(Big Endian)일 경우 유니코드 파일임}
if (ByteOrderMarker=$FEFF) or (ByteOrderMarker=$FFFE) then Result:=True;
FileClose(fd);
end;
'Delphi' 카테고리의 다른 글
[Delphi] Context Menu 등록하기 (COM 방식) (0) | 2009.04.18 |
---|---|
[Delphi] DeleteFile 함수 사용시 읽기전용파일이 지워지지 않을 때 (0) | 2009.04.18 |
[Delphi] 유니코드 파일 쓰기 (0) | 2009.04.18 |
[Delphi] 문자열이 숫자로만 이루어져 있는지 판단 (0) | 2009.04.18 |
[Delphi] 시스템에 설치되어 있는 폰트들의 리스트 출력 (0) | 2009.04.18 |