에디트 플러스를 이용해 UTF-8 로 저장을 하게 되면 BOM 이생긴다.
그로 인해 session_start(); 와 같은 함수가 사용될시 headers already sent 에러가 발생이 된다.
소스상에는 분명 output 된곳이 없지만, 에러가 발생된다.
이유인즉 UTF-8로 저장시 자동으로 UTF-8을 인식하는 BOM이 추가되는것이다.
그렇다면 BOM 이란 녀석은 뭐하는 놈인가?
http://en.wikipedia.org/wiki/Byte_Order_Mark 이곳에서 정답을 찾으세요~!!
바이트 순서 표식
editplus v 2.30 에서 BOM 제거 설정은
Tools > Preferences > Files > UTF-8 signature 항목에서 세번째인 Always remove signature 를 선택하면된다.
---------------------------------------
이것도 참고하세요^^
// UTF8 BOM 을 확인한다...
function checkBOM($str){
if(substr($str, 0,3) == pack("CCC",0xef,0xbb,0xbf)){
return 1;
}
return 0;
}
// UTF8 BOM 을 없앤다..
function removeBOM($str){
// BOM 이 있으면..
if(checkBOM(&$str)){
$str=substr($str,3);
}
return $str;
}
// UTF8 BOM 을 추가한다.
function appendBOM($str){
// BOM 이 없으면..
if(!checkBOM(&$str)) {
$str=pack("CCC",0xef,0xbb,0xbf).$str;
}
return $str;
}
댓글