국제화
국제적인 콘텐츠를 다루기 위해 필요한 HTTP 지원
HTTP 메시지는 어떤 언어로 된 콘텐츠든, 이미지, 동영상 혹은 그 외 다른 종류의 미디어처럼 실어 나를 수 있다. 국제 콘텐츠를 지원하기 위해, 서버는 클라이언트에게 각 문서의 문자와 언어를 알려줘서, 클라리언트가 올바르게 문서를 이루고 있는 비트들을 문자들로 풀어내고, 올바르게 처리해서 사용자에게 콘텐츠를 제공해줄 수 있도록 할 필요가 있다.
서버는 클라이언트에게 문서의 문자와 언어를HTTP Content-Type charset 매개변수와 Content-Language 헤더를 통해 알려준다. 동시에 클라이언트는 서버에게 사용자가 어떤 언어를 이해할 수 있고 어떤 알파벳의 코딩 알고리즘이 브라우저에 설치되어 있는지 말해줄 필요가 있다.
문자집합과 HTTP
차셋(Charset)은 글자를 비트로 변환하는 인코딩이다
HTTP 차셋 값은 어떻게 엔터티 콘텐츠 비트들을 특정 문자 체계의 글자들로 바꾸는지 말해준다. 각 차셋 태그는 비트들을 글자들로 변환하거나 혹은 그 반대의 일을 해주는 알고리즘을 명명한다.
charset 매개변수는 클라이언트에게 어떻게 비트들을 글자들로 변환하는지 알려준다.
문자집합과 인코딩 ?
만약 클라이언트가 잘못된 charset 매개변수를 사용한다면, 클라이언트는 이상한 깨진 글자를 보여주게 될 것이다.
표준화된 MIME 차셋 값
특정 문자 인코딩과 특정 코딩된 문자집합의 결합을 MIME 차셋이라고 부른다. HTTP는 표준화된 MIME 차셋 태그를 Content-Type과 Accept-Charset 헤더에 사용한다. MIME 차셋의 값은 IANA에 등록되어 있다.
Content-Type charset헤더와 META 태그
웹 서버는 클라이언트에게 MIME 차셋 태그를 charset 매개변수와 함께 Content-Type 헤더에 담아 보낸다. 만약 문자집합이 명시적으로 나열되지 않았다면, 수신자는 문서의 콘텐츠로부터 문자지집합을 추측하려 시도한다
Accept-Charset 헤더
HTTP클라이언트는 서버에게 정확히 어떤 문자 체계를 그들이 지원하는디 Accept-Charset 요청 헤더를 통해 알려준다. Accept-Charset 헤더의 값은 클라이언트가 지원하는 문자 인코딩의 목록을 제공한다.
다중언어 문자 인코딩에 대한 지침
문자집합 용어
'차셋(Charset)'은 형편없는 이름이다
MIME 차셋 값은 데이터 비트를 고유한 문자의 코드로 매핑하는 알고리즘의 이름이다. 이것은 문자 인코딩 구조와 코딩된 문자집합의 개념을 합친 것이다.이 용어는 엉성한데, 이미 문자 인코딩 구조와 코딩된 문자집합에 대한 출판된 표준이 존재하기 때문이다.
문자
글리프, 연자 그리고 표현 형태
문자는 유일하고 추상화된 언어의 요소이며, 글리프는 각 글자를 그리는 특정한 방법이다.
각 문자는 미적인 양식과 스크립트에 따라 여러 글리프를 가진다.
일반적인 규칙은, 글리프 하나를 다른 것으로 바꾸었을 때 텍스트의 의미가 바뀐다면 그 두 글리프들은 서로 다른 글자다
코딩된 문자집합
코딩된 문자집합은 보통 코드 번호로 인덱싱된 배열로 구현된다.
문자 인코딩 구조
인코딩 구조
언어 태그와 HTTP
Content-Language 헤더
Accept-Language 헤더
클라이언트는 자신이 이해할 수 있는 콘텐츠를 요청하기 위해 Accept-Language와 Accept-Charset을 사용할 수 있다.
언어 태그의 종류
일반적인 언어의 종류
특정 국가의 언어
방언
지방어
그외의, 다른 언어의 변형이 아닌 표준 언어
비표준 언어
서브 태그
첫번째 서브태그 : 주 서브태그. 표준화되어있다.
두번째 서브태그 : 선택적이고 자신만의 이름 표준을 따른다
세번째 서브태그 : 등록되어 있지 않다
대소문자의 구분 및 표현
모든 태그는 대소문자가 구분되지 않으나, 관용적으로 언어를 나타낼 때는 소문자를 사용하고, 국가를 나타낼 때는 대문자를 사용한다.
URI에서 사용될 수 있는 문자들
URI에서 사용할 수 있는 US-ASCII 문자들의 부분집합은 예약된 문자들, 예약되지 않은 문자들, 이스케이프 문자들로 나뉜다. 예약되지 않은 문자들은 그것들을 허용하는 URI의 어떤 구성요소에서 일반적으로 사용될 수 있다.
이스케이핑과 역이스케이핑
URI 이스케이프는 예약된 문자나 다른 지원하지 않는 글자들을 안전하게 URI에 삽입할 수 있도록 방법을 제공한다. 이스케이프는 퍼센트 글자 하나와 뒤이은 16진수 글자 둘로 이루어진 세 글자 문자열이다.
내부적으로 HTTP애플리케이션은 URI를 데이터가 필요할 때만 언이스케이핑 해야한다.
애플리케이션은 어떤 URI도 결코 두번 언이스케이핑 되지 않도록 해야 한다
이스케이프 값들은 US-ASCII 코드의 범위에 있어야 한다
기타 고려사항
헤더의 명세와 맞지 않는 데이터 - HTTP헤더는 반드시 US-ASCII 문자집합의 글자들로만 이루어져야 한다.
날짜 - HTTP애플리케이션은 명세에 맞지 않는 날짜를 관대하게 받아들여야 한다
도메인 이름 - 웹 브라우저들은 퓨니코드 기법을 이용하여 사용자가 입력한 다국어로 된 도메인 이름을 알파벳과 숫자 들으로 된 도메인 이름으로 변환한다.
Last updated