포럼
왜 PHP(UTF-8)를 수정할때 메모장을 이용하면 안되는가?
2014.01.18 02:25
요새 한국 호스팅이 EUC-KR에서 & 사이트들이 XE나 그누보드, 킴스보드 같은 UTF-8 관련 많이 넘어가면서
프로그래밍에 지식이 없는 분들도 UTF-8 인코딩을 이용한 프로그램을 수정 하는 일이 많아 지고 있습니다.
+ 로 관련 지식이 없는 분들은 UTF-8 인코딩으로 쓰여진 프로그램들을 수정할 때 Windows 의 기본 텍스트 에디터 툴인
메모장을 이용하는 경우가 많은데요.
그로 인해서 header modify 에러로 곤란을 겪으시는 분들이 많아지고 있습니다.
UTF 인코딩의 경우 8, 16, 32등 여러 방식이 있는데 이런 문서들은 저장을 할때 문서의 제일 앞부분에
바이트의 순서 문자 (Byte order Mark - 일명 BOM문자)를 문서 제일 앞에 추가하여 저장 됩니다.
그 이유는 프로그램들이 해당 문서가 어떤 인코딩 방식으로 쓰여 있는지 판별하기 위해,
또 바이트의 순서를 찾기 위해 BOM(UTF-8의 경우 EF BB BF)문자가 사용됩니다.
근데 이 BOM 문자가 일부 프로그램, 그리고 일부 OS 에서 혼란을 야기시킵니다.
XE를 이용하는 우리가 접할 수 있는 가장 흔한 예로는 PHP의 header modify 오류와
문서 include 이용 했을 때 생기는 알수 없는 여백 문제 입니다.
PHP 관련 오류는 PHP가 유니코드에 대한 지원이 느려서 그런건데요..
일단 PHP관련 셋팅을 할때 서버 엔지니어가 --enable-zend-multibyte 옵션을 추가해주면 간단히 해결됩니다만
아직까지 한국의 호스팅 업체에서 --enable-zend-multibyte 를 기본으로 추가시킨 업체를 보진 못했습니다.
제가 아직까지 못봤을 경우가 크지만요 (...)
말이 좀 엇나갔는데..
메모장의 경우 이 BOM 문자를 UTF-8 방식으로 저장할때 자동으로 삽입해 줍니다.
그래서 session_start 나 header 같이 선언하기전에 아무것도 출력하지 않아야되는 경우 BOM문자가 삽입되어있기 때문에
에러가 발생하게 됩니다.
그렇기 때문에 서버 셋팅을 다시 할 수 없는 이상
UTF-8 로 저장할때는 메모장 이외의 notepad++ 나 국산소프트웨어 editplus 같은 프로그램을 이용해주셔서
BOM이 없는 UTF-8 로 저장해주셔야 되는 것입니다.!!
PS. 그나저나 에디터가 글꼴이라던지 크기를 마음대로 바꾸네요... (...)
PS2. 그냥 질답 게시판 관련 문의가 꽤 빈번하게 올라오길래 써봤습니다.