🧠 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 |
---|