#1. 국제적인 콘텐츠를 다루기 위해 필요한 HTTP 지원
국제 콘텐츠를 지원하기 위해 서버는 클라이언트에게 각 문서의 문자와 언어를 알려주어야 한다. 클라이언트가 올바르게 문서를 이루고 있는 비트들을 문자들로 풀어내고 올바르게 처리해서 사용자에게 콘텐츠를 제공해줄 수 있도록 할 필요가 있다. 서버는 클라이언트에게 문서의 문자와 언어를 HTTP Content-Type charset 매개변수와 Content-Language 헤더를 통해 알려준다.
동시에 클라이언트는 서버에게 사용자가 어떤 언어를 이해할 수 있고 어떤 알파벳의 코딩 알고리즘이 브라우저에 설치되어 있는지 말해줄 필요가 있다. 클라이언트는 서버에게 자신이 어떤 차셋 인코딩 알고리즘들과 언어들을 이해하며 그중 무엇을 선호하는지 말해주기 위해 Accept-Charset과 Accept-Language 헤더를 보낸다.
Accept-Language: fr, en;q=0,8 Accept-Charset: iso-8859-1, utf-8 |
#2. 문자집합과 HTTP
차셋(Charset)은 글자를 비트로 변환하는 인코딩이다.
차셋 값은 엔터티 콘텐츠 비트들을 특정 문자 체계의 글자들로 바꾸는지 말해준다.
문자집합과 인코딩은 어떻게 동작하는가
- 데이터 비트를 인코딩 구조를 사용하여 디코딩한다.
- 코딩된 문자집합을 사용하여 글자를 찾는다.
- MIME 차셋 태그는 문자 인코딩 구조와 코딩된 문자집합 매핑의 결합을 서술한다.
- 글꼴과 포매팅 소프트웨어를 사용하여 화면이 보여줄 모양을 찾는다.
표준화된 MIME 차셋 값
특정 문자 인코딩과 특정 코딩된 문자집합의 결합을 MIME 차셋이라고 부른다. HTTP는 표준화된 MIME 차셋 태그를 Content-Type과 Accept-Charset 헤더에 사용한다.
Content-Type charset 헤더와 META 태그
웹 서버는 클라이언트에게 MIME 차셋 태그를 charset 매개변수와 함께 Content-Type 헤더에 담아 보낸다.
Content-Type: text/html; charset=iso-2022-jp |
만약 문자집합이 명시적으로 나열되지 않았다면 수신자는 문서의 콘텐츠로부터 문자집합을 추측하려 시도한다. HTML 콘텐츠에서 문자 집합은 문자 집합을 서술하는 <META HTTP-EQUIV="Content-Type">태그에서 찾을 수 있다.
Accept-Charset 헤더
HTTP 클라이언트는 서버에게 정확히 어떤 문자 체계를 그들이 지원하는지 Accept-Charset 요청 헤더를 통해 알려준다. Accept-Charset 헤더의 값은 클라이언트가 지원하는 문자 인코딩의 목록을 제공한다.
Accept-Charset 요청 헤더에 대응하는 Content-Charset 응답 헤더는 존재하지 않는다.
MIME 차셋 인코딩 태그
HTTP는 표준화된 MIME 차셋 태그를 Content-Type과 Accept-Charset 헤더에 사용한다.
MIME 차셋 값 | 설명 |
US-ASCII | 표준화된 유명한 문자 인코딩이다. 이것은 ASCII로도 불리지만 ISO 646애는 여기서 선택된 글자들을 수정한 여러 가지 국제 변형이 있기 때문에 'US'라는 접두어를 붙이는 것을 선호한다. US-ASCII는 7비트 값을 128가지 글자에 대응 시킨다. 하이 비트(high bit)는 사용되지 않는다. |
ISO-8859 | 국제적인 글쓰기를 위해 필요한 글자들을 하이 비트를 이용해서 추가한 US-ASCII의 8비트 확대집한들이다. iso-8859는 지역에 따라 커스터마이징된 문자집합을 제공한다. |
ISO-2022-jp | 일본어 전자우편과 웹 콘텐츠를 위해 널리 사용되는 인코딩이다. |
EUC-jp | 여러 종류의 모드나 이스케이프 문자열 없이 각 글자를 식별하기 위해 명시적 비트 패턴을 사용하는 iso-2022 호환 가변길이 인코딩이다. |
shift_JIS | 호환성 문제 때문에 약간 복잡하고 모든 문자에 대응하지도 못하지만 여전히 흔하게 쓰이고 있다. |
koi8-r | 러시아어를 위한 인기 있는 8비트 인터넷 문자 집합 인코딩이다. |
UTF-8 | UTF-8은 전 세게의 문자들에 대한 보편적 문자집합인 유니코드를 표현하기 위한 흔히 쓰이는 가변길이 문자 인코딩 구조다. 각 글자를 1에서 6바이트로 표현하는 가변길이 인코딩을 문자 코드 값에 사용한다. UTF-8의 주요 기능 중 하나는 통상적인 7비트 아스키 문자열에 대한 하위호환성이다. |
windows-1252 | 마이크로소프트는 자신의 코딩된 문자집합을 코드 페이지라고 부른다. 윈도우 코드 페이지 1252는 iso-8859-1의 확장이다. |
참고 자료
- HTTP완벽가이드 , 인사이트
'HTTP' 카테고리의 다른 글
[HTTP] 웹 호스팅 (0) | 2020.05.07 |
---|---|
[HTTP] 내용 협상(Content-negotiation)과 트랜스코딩 (0) | 2020.05.06 |
[HTTP] 엔터티와 인코딩 (0) | 2020.05.05 |
[HTTP] 보안 HTTPS (0) | 2020.05.05 |
[HTTP] 기본 인증과 다이제스트 인증 (0) | 2020.05.05 |