나모코드에디터로 PHP 코딩 시 UTF-8의 BOM으로 인한 헤더오류 방지법.

Posted by taeho Tae-Ho
2011.02.23 11:18 Web/DB/Dev

취미삼아 PHP를 이용해 웹으로 이것 저것 코딩하며 노는 나로서는 HTML이나 CSS, PHP 함수에 대해 많은것을 항상 외우고 있지를 못하다. 코딩을 할 때마다 똑같은 키워드를 매일 인터넷을 뒤져가며 하다보니 코딩 속도도 더디고 힘도 많이 든다.

그러다 발견한 나모코드에디터.... 바로 내가 찾던 에디터다. 직접 만들 실력은 안되니 실력자들이 만들어 놓은 것을 주로 활용하는 내게 나모코드에디터는 사막을 헤매다 오아시스를 만난 듯한 느낌을 주었다. (물론 조금 아쉬운 부분들도 있지만..)

그런데...

UTF-8로 저장하고 서버에 업로드한 뒤 브라우저에서 호출하면 이런 에러가 찍힌다.. 아무리 해도 이유를 알아내지 못하다가 얼마전에야 그 원인을 알았다.
(관련포스트 : http://cybercafe.tistory.com/178 )



그런데 문제는 나모코드에디터의 파일저장 화면에 "UTF-8 BOM 없음" 과 같이 파일헤더부분에 BOM(Byte Order Mark)를 기록하지 않는 저장옵션을 찾지 못했다. 그래서 결국 나모코드에디터를 사용하지 못할 처지에 놓이게 되었다.

하늘이 무너져도 솟아날 구멍은 있는 법...

나모코드에디터의 도움말부터 모든 메뉴의 설정 화면을 뒤졌다. 그리고 결국 찾아낸 옵션....


"도구 - 프로그램 설정" 메뉴에서 찾아낸 "BOM이 없는 UTF-8 파일 지원" 이라는 체크옵션이 있었다. 그런데 문제는 이 옵션을 체크(V)하고 저장한 뒤 웹서버에 업로드하고 호출해도 같은 오류가 발생한다는 것이다.

혹시나 버그(?)일까 싶어 체크를 해제하고 저장해보니.... 빙고..!!!

옵션이 내가 생각했던 것과 반대였다. 옵션을 체크하면 BOM 없이 저장되어야 할 것 같은데 BOM을 포함하여 저장이 하는 것 같다. 그리고 체크를 해제하면 BOM이 저장되지 않는다. 코드에디터 개발자가 잠시 착각하고 if 문을 잘못 코딩하였거나 뭔가 다른 의미로 생각하고 코딩한 것 같다.

어쨌든... 이 옵션을 만들어준 나모코드에디터 개발자에게 감사드린다... 흑흑~~~~





신고
이 댓글을 비밀 댓글로
  1. 그렇네요. 좀 애매한 표현이네요 어떻게 했을까요?

    if (인코딩=utf8) then
    if (BOM 없는 지원)
    // 음... 없다는 표시니깐 BOM 넣지말자
    else
    // 이건 토글이니 위꺼랑 반대로
    end

    아니면 아래처럼 간략화로 했을까요?
    if (인코딩=utf8)
    BOM 체크값!=(BOM옵션체크박스값)
    • 주인장
    • 2011.02.23 22:18 신고
    ㅎㅎ 네..그렇겠죠~~ ^^