1. 국제적인 콘텐츠를 다루기 위해 필요한 HTTP 지원
HTTP 메시지는 어떤 언어로된 콘텐츠, 이미지, 동영상 혹은 그외 다른 종류의 미디어를 상자처럼 실어 나를 수 있어, HTTP에서 엔터티 본문이란 그저 비트들로 가득 찬 상자에 불과하다.
국제 콘텐츠를 지원하기 위해, 서버는 클라이언트에게 각 문서의 문자와 언어를 알려주어, 클라이언트가 올바르게 풀어내고, 처리해서 제공하도록 할 필요가 있다.
서버는 클라이언트에게 문서의 문자와 언어를 Content-Type charset 매게변수와 Content-Language 헤더를 통해서 알려준다.
클라이언트는 서버에게 자신이 어떤 차셋 인코딩 알고리즘들과 언어들을 이해하며, 어떤 것을 선호하는지 Accept-Charset과 Accept-Language 헤더를 보내 알려준다.
2. 문자집합과 HTTP
2.1 차셋은 글자를 비트로 변환하는 인코딩이다.
차셋 값은, 어떻게 엔터티 콘텐트 비트들을 특정 문자 체계의 글자들로 바꾸는지 말해준다.
각 차셋 태그는 비트들을 글자로 변환하거나 혹은 그 반대의 일을 해주는 알고리즘을 명명한다.
차셋 태그는 등록된 MIME 문자집합에 표준화되어있고, IANA가 관리한다.
클라이언트가 잘못된 charset 매개변수를 사용하면, 클라이언트는 이상한 깨진 글자를 보여주게 된다.
Content-Type: text/html; charset=iso-8859-6
수신자에게 콘텐크가 HTML파일임을 말해주고, 콘텐츠 비트들을 글자들로 디코딩하기 위해 ios-8859-6 아랍 문자집합 디코딩 기법을 사용하라고 말해준다.
2.2 문자집합과 인코딩은 어떻게 동작하는가
- 데이터의 비트를 인코딩 구조를 사용하여 디코딩 한다.
- 코딩된 문자집합을 사용하여 글자를 찾는다.
- MIME 차셋 태그는 문자 인코딩 구조와 코딩된 문자집합 매핑의 결합을 서술한다.
- 글꼴과 포매팅 소프트웨어를 사용하여 화면이 보여줄 모양을 찾는다.
2.3 표준화된 MIME 차셋 값
- 특정 문자 인코딩과 특정 코딩된 문자집합의 결합을 MIME 차셋이라고 부른다.
- HTTP는 표준화된 MIME 차셋 태그를 Content-type과 Accept-Charset 헤더에 사용한다.
만약 문자집합이 명시적으로 나열되지 않았다면, 수신자는 문서의 콘텐츠로부터 문자집합을 추측하려 시도한다. HTML에서는 <META HTTP-EQUIV="Content-Type'> 태그에서 찾을 수 있다.
클라이언트가 문자 인코딩을 추측하지 못했다면, iso-8859-1인 것으로 가정한다.
3. 다중언어 문자 인코딩에 대한 지침
3.1 문자집합 용어
- 문자 : 알파벳글자, 숫자, 구두점, 표의문자, 기호 등 글씨에 최소 단위, 약식으로 유니코드
- 글리프: 하나의 글자를 표헌하기 위한, 획의 패턴이나 다른 것과 구분되는 유일한 시각적 형태
- 코딩된 문자: 우리가 글자를 다룰 수 있도록 각 글자에 할당된 유일한 숫자
- 코드 공간: 문자 코드 값으로 사용하려고 계획해 둔 정수의 범위
- 코드 너비: 각 문자 코드의(고정된 크기의) 비트 개수
- 사용 가능 문자집합: 세상에 존재하는 모든 글자의 부분집합
- 코딩된 문자집합: 실제 글자들에 숫자로 됨 문자 코드를 대응시킨 것
- 문자 인코딩 구조: 숫자로 된 문자코드들을 콘텐츠 비트의 연속으로 인코딩(또는 디코딩)하는 알고리즘
MIME 차셋 값은 데이터 비트를 고유한 문자의 코드로 매핑하는 알고리즘의 이름이다. 이것은 문자 인코딩 구조와 코딩된 문자집합의 개념을 합친 것이다.
3.2 글리프, 연자
글리프는 각 글자를 그리는 특정한 방법으로, 각 문자는 미적 양식과 스크립트에 따라 여러가지 글리프를 가진다.
글자들이 부드럽게 이어지는 연자를 지원한다.
3.3 코딩된 문자집합 ( Coded Character Set)
- US-ASCII: 정보교환을 위한 미국 표준 코드로 표준화된 가장 기본적인 문자집합으로 코드공간 전체를 표현하는데 7비트만이 필요하다. HTTP메시지에 사용된다.
- ISO-8859: 국제적 글쓰기를 위해 필요한 글자들을 하이 비트를 이용해서 추가한 US-ASCII의 8비트 확대집합들이다. 추가 비트에 의해 제동되는 추가 공간은 모든 글자를 담기엔 작아 지경에 따라 커스터마이징된 문자집합을 제공한다.
- JIS X 0201: 아스키를 일본어 가타카나 반각문자를 더해 확장한 극잔덕으로 작은 문자집합이다.
- JIS X 0208: 최초의 멀티바이트 일본어 문자집합이다.
- JIS X 0212: 0208에 6,607개의 문자를 추가한 문자집합이다.
- UCS: 전 세계의 모든 글자를 하나의 코딩된 문자집합으로 통합하려 노력하는 세계적인 표준이다.
3.4 문자 인코딩 구조
문자 인코딩 구조들은 숫자로된 문자 코드를 콘텐츠 비트들로 변환하고, 다른쪽에선 다시 문자 코드로 환원한다.
문자 인코딩 구조 종류
- 고정폭: 각 코딩된 문자를 고정된 길이릐 비트로 표현한다. ( 빠르지만 공간낭비 )
- 가변폭(비모달): 다른 문자 코드 번호에 다른 길이의 비트를 사용한다. ( 자주 사용하는 글자의 비트 길이를 줄이고, 이전 8비트 호환성 유지가 가능 )
- 가변폭(모달): 다른 모드로의 전환을 위해 특별한 escape 패턴을 사용한다. 처리는 복잡하지만 복잡한 표기 체계를 효과적으로 지원한다.
문자 인코딩 구조 예시
- 8비트 고정폭 아이덴티티: 각 문자 코드를 그에 대응하는 8비트 값으로 인코딩 한다.
- UTF-8: 문자 코드의 값을 위해 비모달 가변길이 인코딩을 사용한다. 선두 비트들은 인코딩된 문자의 길이를 바이트 단위로 나타내고, 이후의 바이트들은 각각 6비트의 코드 값을 담는다
- iso-2022-jp: 일본어 인터넷 문서를 위해 널리 사용되는 인코딩으로, 8비트 문자를 지원하지 않는 소프트웨어와 문제점을 방지하기 위해 128보다 작은 값으로만 이루어진 가변길이 모달 인코딩 이다.
- euc-jp: 유닉스 운영체제에서 아시아 문자들을 지원하기 위해 개발 되었다. 여러 표준 일본어 문자집합을 사용할 수 있도록 해주는 가변길이 인코딩이다. 비모달 방식이며, 모드 간 전환을 위한 이스케이프 문자열이 존재하지 않는다.
- euc-kr: 한글 인터넷 문서를 위해 사용되는 가변길이 인코딩으로 KS X 1003 과 KS X 1001 의 두자기 문자 집합을 지원한다.
- KS X 1003은 1바이트로 인코딩되는 로마자 문자 집합으로, 아스키에서 역슬래시를 원화 기로고 치환하기만 한 것
- KS X 1001은 2바이트로 인코딩되는 한글,한자 그외 특수문자로 이루어진 한국어 문자 집합이다.
'FE > BOOK' 카테고리의 다른 글
[HTTP 완벽가이드] 15장 엔터티와 인코딩 (0) | 2025.01.15 |
---|---|
[HTTP 완벽가이드] 14장 보안 HTTP (0) | 2025.01.15 |
[HTTP 완벽가이드] 13장 다이제스트 인증 (0) | 2025.01.10 |
[HTTP 완벽가이드] 12장 기본 인증 (2) | 2025.01.02 |
[HTTP 완벽가이드] 11장 클라이언트 식별과 쿠키 (0) | 2025.01.02 |