국제적인 콘텐츠를 다루기 위해 필요한 HTTP 지원

서버는 클라이언트에게 문서의 문자와 언어를 HTTP Content-Type charset 매개변수와 Content-Language 헤더를 통해 알려준다.

이 헤더들을 엔터티 본문의 ‘비트들로 가득 찬 상자’에 무엇이 들어있는지, 어떻게 콘텐츠를 화면에 출력될 올바른 글자들로 바꾸는지, 그 텍스트가 어떤 언어에 해당하는지 서술한다.

클라이언트는 서버에게 자신이 어떤 차셋 인코딩 알고리즘들과 언어들을 이해하며 그중 무엇을 선호하는지 말해주기 위해 Accept-Charset과 Accept-Language 헤더를 보낸다.

문자집합과 HTTP

차셋(Charset)은 글자를 비트로 변환하는 인코딩이다

HTTP 차셋 태그는 비트들을 글자들로 변환하거나 혹은 그 반대의 일을 해주는 알고리즘을 명명한다.

차셋 태그는 등록된 MIME 문자집합에 표준화되어 있고, IANA가 관리한다.

ex) 다음 Content-Type 헤더는 수신자에게 콘텐츠가 HTML 파일임을 말해주고, charset 매개변수는 수신자에게 콘텐츠 비트들을 글자들로 디코딩하기 위해 iso-8859-6 아랍 문자집합 디코딩 기법을 사용하라고 말해준다.

Untitled

문서와 브라우저에 의해 사용되는 MIME 차셋 인코딩 구조들을 몇 가지 나열하면 다음과 같다.

Untitled

Content-Type charset 헤더와 META 태그

만약 문자집합이 명시적으로 나열되지 않았다면, 수신자는 문서의 콘텐츠로부터 문자집합을 추측하려 시도한다.

HTML 콘텐츠에서 문자 집합은 <META HTTP-EQUIV=”Content-Type”> 태그에서 찾을 수 있다.

만약 문서가 HTML이 아니거나 META Content-Type 태그가 없다면, 소프트웨어는 언어와 인코딩에 대한 일반적인 패턴을 찾지 위해 실제 텍스트를 스캐닝하여 문자 인코딩을 추측한다.

만약 클라이언트가 문자 인코딩을 추측하지 못했다면, iso-8859-1인 것으로 가정한다. (대부분의 현대 시스템에서는 UTF-8을 사용)

Accept-Charset 헤더

HTTP 클라이언트는 서버에게 어떤 문자 체계를 지원하는지 알려주기 위해 Accept-Charset 요청 헤더를 사용한다.

ex) Accept-Charset: iso-8859-1, utf-8