바이트 순서 표식

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
유니코드
부호화 형식
UCS
양방향 텍스트
BOM
한중일 통합 한자
유니코드 범위 목록
유니코드 정규화
유니코드와 HTML
유니코드와 전자 우편
유니코드 글꼴
v  d  e  h

바이트 순서 표식(Byte Order Mark, BOM)은 유니코드에서 엔디안을 구별하기 위해 사용되는 문자로, 문자 값은 U+FEFF이다.

UTF-16, UTF-32와 같은 인코딩에서는 엔디안의 종류에 따라 문자열의 값이 완전히 달라지므로, 문자열의 엔디안을 구별할 수 있는 표식이 필요하다. 이에 따라 유니코드 문자열 앞에 BOM 문자를 붙여, 맨 처음에 읽히는 값에 따라 엔디안을 구별한다.

예를 들어, UTF-16에서 빅 엔디안의 경우에 문자열의 가장 처음 두 바이트는 FE FF가 된다. 리틀 엔디안의 경우에는 FF FE가 된다.

UTF-8에는 엔디안 문제가 일어나지 않으므로 BOM을 붙여야 할 필요는 없지만, 해당 자료가 UTF-8 인코딩이라는 표식으로 사용하는 경우도 있다. 특히 마이크로소프트 윈도의 많은 문서 편집기는 UTF-8로 저장할 경우 자동으로 문서의 가장 앞부분에 BOM을 추가한다. 이와는 반대로 유닉스 계열의 문서 편집기는 BOM을 사용하지 않는 경우가 보통으로, 이 경우 문서의 BOM을 잘못 인식하여 문제가 발생할 수도 있다. 예를 들어, PHP 인터프리터에서는 BOM을 인식하지 못하고 일반 문자열로 간주하는데, PHP에서 HTTP 헤더를 변경하려면 그 시점에서 어떠한 문자열도 출력해서는 안 된다(php.net 도움말). 하지만 문서에 BOM이 있으면 문자열 출력이 일어나고, 따라서 헤더를 변경할 수 없다는 경고가 발생하게 된다.

BOM 표[편집]

각 유니코드 인코딩 방법에 따른 BOM 값은 다음과 같다.

Encoding Representation
UTF-8 EF BB BF
UTF-16 빅 엔디안 FE FF
UTF-16 리틀 엔디안 FF FE
UTF-32 빅 엔디안 00 00 FE FF
UTF-32 리틀 엔디안 FF FE 00 00
SCSU 0E FE FF
UTF-EBCDIC DD 73 66 73
BOCU-1 FB EE 28