데이터 인코딩

BOM이 뭔가요?

yoooCo 2025. 4. 15. 19:02

🧠 BOM은 뭐죠?

BOM은 _Byte Order Mark_의 줄임말이에요.
📎 "이 파일은 어떤 인코딩이고, 바이트는 이렇게 읽어주세요!"
라고 맨 앞에 붙어있는 작은 쪽지입니다.

📦 BOM이 왜 필요할까요?

예: 문자 'A'를 2바이트로 저장해야 할 때
  • UTF-16에선 'A'00 41로 저장되기도 하고
  • 반대로 41 00일 수도 있어요!

✅ 순서를 바꾸면 다른 문자로 잘못 읽힐 수 있죠.
그래서 이때 “나는 Big Endian이에요!” 또는
“Little Endian이에요!” 라고 말해주는 게 바로 BOM이에요.


🔍 BOM, 직접 보면 이렇게 생겼어요

인코딩 BOM 값 (Hex) 의미
UTF-8 with BOM EF BB BF 굳이 말하자면 “나 UTF-8이야~”
UTF-16 BE FE FF 큰 바이트가 먼저
UTF-16 LE FF FE 작은 바이트가 먼저

📛 문제는 여기서 생깁니다 📛

🧪 예시: BOM이 포함된 UTF-8 파일
EF BB BF 48 65 6C 6C 6F

→ 실제 내용은 Hello지만…

😱 웹에서 이렇게 보일 수 있어요 😱
�Hello

← BOM이 문자처럼 출력된 거예요!
브라우저가 쪽지를 못 알아보고 그냥 읽어버린 거죠.


🧾 정리해봅시다: 인코딩 비교표

인코딩 BOM 필요 어디서 쓰일까? 장점 주의할 점
UTF-8 ❌ 필요 없음 웹, HTML, JSON 등 범용, 안정 가장 추천되는 방식
UTF-8 with BOM ⚠️ 안 쓰는 게 좋아요 Windows 메모장 일부 툴에서 인식 웹에서 깨짐 가능
UTF-16 ✅ 꼭 필요함 시스템 내부, 자바 다국어 저장 효율 엔디안 구분 필요

🎯 그래서 어떤 걸 써야 할까요?

환경 추천 인코딩 이유
웹 페이지 ✅ UTF-8 (no BOM) 깨짐 방지 + HTML 호환
JSON, JS ✅ UTF-8 (no BOM) 파싱 오류 방지
윈도우 메모장 🔸 UTF-8 with BOM 저장 시 자동 설정
자바/윈도우 내부 ✅ UTF-16 (with BOM) 시스템에 따라 사용됨

🎈 진짜 마무리로..

BOM은 파일 앞에 붙은 자기소개 쪽지예요.
근데 웹 브라우저는 “아니 왜 말 걸어?” 하고 깨져버리는 경우도 있어요 😂
그래서 UTF-8은 쪽지 없이 말없이 조용히 시작하는 게 더 좋아요.


💬 Tip

BOM은 친절한 안내지만, 웹에선 오히려 방해꾼이 될 수 있어요.
그래서 개발자라면…
👉 UTF-8 without BOM 기억해두세요!

'데이터 인코딩' 카테고리의 다른 글

유니코드(Unicode)와 아스키 코드(ASCII)  (0) 2025.04.01