질문)
답변)
✅ 질문 요약
- HTML 문서를 UTF-8로 전송할 때 Content-Type: text/html; charset=UTF-8로 설정하는 건 이해하셨습니다.
- 그런데 왜 문서 자체를 저장할 때도 UTF-8로 저장해야 하는지 궁금하신 것이죠?
🔍 이유: "전송 인코딩"과 "파일 저장 인코딩"은 별개입니다
1. HTML은 텍스트 기반 문서입니다
HTML 안에 있는 모든 문자는 실제로 **바이트(byte)**로 저장되어야 합니다.
그런데 인코딩이 무엇이냐에 따라 같은 문자가 다른 바이트 시퀀스로 저장됩니다.
예를 들어:
- "한"이라는 글자는 UTF-8에서는 ED 95 9C (3바이트)
- EUC-KR에서는 C7 D1 (2바이트)
따라서 저장할 때 어떤 인코딩으로 저장했는지가 매우 중요합니다.
2. 브라우저는 인코딩 정보를 바탕으로 바이트를 문자로 해석
브라우저는 아래 순서로 문서의 인코딩을 추측하고 문자로 해석합니다:
- HTTP 헤더의 charset 값
- HTML <meta charset="...">
- 문서 자체의 바이트 패턴을 통한 추정
➡ 만약 UTF-8로 전송했는데 실제 파일은 EUC-KR로 저장되어 있으면?
브라우저는 잘못된 문자로 해석하고 **문자 깨짐(�, �)**이 발생합니다.
3. 예시로 살펴보기
파일을 EUC-KR로 저장하고 UTF-8로 전송한 경우:
- 실제 저장 인코딩: EUC-KR
- 전송 인코딩: UTF-8 (헤더와 meta 모두)
✅ 브라우저는 UTF-8로 해석하려고 함
❌ 실제 내용은 EUC-KR → 잘못 해석됨 → 깨짐 발생
✅ 결론
HTML 문서를 저장할 때의 인코딩과, 전송하거나 브라우저에서 지정하는 인코딩은 반드시 일치해야 합니다.
- meta charset="UTF-8"이라고 해 놓고
- 파일을 EUC-KR로 저장하거나
- 서버가 UTF-8로 전송하지 않으면
➡ 문자가 깨지거나, 오작동합니다.
💡 실무 팁
- HTML 파일은 항상 UTF-8 with BOM 없이 저장하는 것이 권장됩니다.
- IDE/에디터에서 저장 인코딩을 명시적으로 UTF-8로 설정하세요.
- 서버에서 Content-Type 헤더도 charset=UTF-8로 설정하세요.
- <meta charset="UTF-8">은 반드시 <head> 안에 아주 초기에 배치하세요.
'Web(HTML)' 카테고리의 다른 글
Ratio of Actual Transaction Price to Asking Price for Apartment Sales by Region(2019~2024) (0) | 2025.03.12 |
---|---|
index.html(2025.02.26) (0) | 2025.02.26 |
naver_attach_info + apt_real_info data (0) | 2025.02.21 |
해당 통계 column 에 색깔입히기 (0) | 2025.02.21 |
Data NotFound,Comment,Element 추가 (0) | 2025.02.17 |