텍스트 파일은 파일시작부분의 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








Posted by bloodguy
,