2011년 3월 15일 화요일

유니코드인지 판별하는 법 (텍스트 파일)

텍스트 파일은 파일시작부분의 2바이트를 읽어 유니코드인지 구분이 가능하다.
파일시작부분의 2바이트가 $FEFF$FFFE일 경우 유니코드 텍스트파일이다.


아래는 파일이름으로 유니코드인지 판별하는 함수
: 유니코드이면 True 아니면 False 를 반환

functionIsUnicodeTextFile(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) thenResult:=True;

FileClose(fd);
end;

댓글 없음:

댓글 쓰기