포럼
왜 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. 그냥 질답 게시판 관련 문의가 꽤 빈번하게 올라오길래 써봤습니다.
댓글 4
-
YJSoft
2014.01.18 02:42
-
Canto
2014.01.18 02:44
콘트롤+A로 메모장에 있는 주소를 복사하셨었나보네요 ㅎㅎ
뭐 원래 메모장은 개발용 도구가 아니니까요 ㅎㅎ
스크립트 파일들이 열리기 때문에 & 기본 프로그램이기 때문에 편리해서 사람들이 그냥 사용하는 것일 뿐.. ㅠㅠ
-
qwms
2014.01.18 12:20
그렇군요... 저는 애초에 메모장이 보기가 힘들어서
처음부터 에딧플러스를 이용했습니다... :)
아직 내공이 없어서 같은 글자색이면 구분하기 힘들더라구요..
-
explode
2014.01.19 11:45
여기 회원분이 운영하는 호스팅중에 zend multibyte support로 컴파일된 곳이 있네요.
윈도우 메모장의 경우 복사 붙여넣기시 BOM까지 붙여 넣어버리는 경우가 있는 것 같습니다
소스 코드상으로는 <A href="https://~" 로 정상인데 실제 브라우저에서 http://%EF%BB%BFhttps// 로 링크가 걸려 고생했던 적이 있었습니다.
바이너리 에디터상으로 열어 보니 "와 https 사이에 EF BB BF가 들어가 있어서 생긴 문제였죠.
아무튼 윈도우 메모장은 IE급으로 개발하면서 사용하기엔 불편한 도구라고 전 생각합니다