HTTP 완벽 가이드 16장 국제화

DARTZ·2022년 8월 7일
0

HTTP 완벽 가이드

목록 보기
10/11

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

국제 콘텐츠를 지원하기 위해, 서버는 클라이언트에게 각 문서의 문자와 언어를 알려줘서, 클라이언트가 올바르게 문서를 이루고 있는 비트들을 문자들로 풀어내고, 올바르게 처리해서 사용자에게 콘텐츠를 제공해줄 수 있도록 할 필요가 있다.

2. 문자집합과 HTTP

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

HTTP 차셋 값은, 어떻게 엔터티 콘텐츠 비트들을 특정 문자 체계의 글자들로 바꾸는지 말해준다. 각 차셋 태그는 비트들을 글자들로 변환하거나 혹은 그 반대의 일을 해주는 알고리즘을 명명한다.

2) 문자집합과 인코딩은 어떻게 동작하는가

  • 문서를 이루는 비트들은, 특정 코딩된 문자집합의 특정 문자로 식별될 수 있는 문자 코드로 변환된다.

  • 문자 코드는 코딩된 문자집합의 특정 요소를 선택하기 위해 사용된다.

3) 잘못된 차셋은 잘못된 글자들을 낳는다.

만약 클랑이너트가 잘못된 charset 매개변수를 사용한다면, 클라잉너트는 이상한 깨진 글자를 보여주게 될 것이다.

4) 표준화된 MIME 차셋 값

특정 문자 인코딩과 특정 코딩된 문자집합의 결합을 MIME 차셋이라고 부른다.

HTTP는 표준화된 MIME 차셋 태그를 Content-Type과 Accept-Charset 헤더에 사용한다. MIME 차셋의 값은 IANA에 등록되어 있다.

5) Content-Type charset 헤더와 META 태그

웹 서버는 클라이언트에게 MIME 차셋 태그를 charset 매개변수와 합께 Content-Type 헤더에 담아 보낸다.

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

6) Accept-Charset 헤더

대부분의 클라이언트는 모든 종류의 문자 코딩과 매핑 시스템을 지원하지는 않는다.

HTTP 클라이언트는 서버에게 정확히 어떤 문자 체계를 그들이 지원하는지 Accept-Charset 요청 헤더를 통해 알려준다. Accept-Charset 헤더의 값은 클라이언트가 지원하는 문자 인코딩의 목록을 제공한다.

3. 다중언어 문자 인코딩에 대한 지침

1) 문자 집합 용어

여덟 개의 전자 문자 체계 용어이다.

  • 문자: 글쓰기의 최소 단위
  • 글리프: 하나의 글자를 표현하기 위한, 획의 패턴이나 다른 것과 구분되는 유일한 시각적 형태.
  • 코딩된 문자: 우리가 글자를 다룰 수 있도록 각 글자에 할당된 유일한 숫자.
  • 코드 공간: 문자 코드 값으로 사용하려고 계획해 둔 정수의 범위
  • 코드 너비: 각 문자 코드의 비트 개수
  • 사용 가능 문자 집합: 글자들에 대한 특정한 작업 집합
  • 코딩된 문자집합: 사용 가능 문자집합
  • 문자 인코딩 구조: 숫자로 된 문자 코드들을 콘텐츠 비트의 연속으로 인코딩하는 알고리즘

2) 차셋은 형편없는 이름이다

MIME 차셋 태그는 문자집합을 의미하는 것이 결코 아니다 MIME 차셋 값은 데이터 비트를 고유한 문자의 코드로 매핑하는 알고리즘의 이름이다.
이것은 문자 인코딩 구조와 코디왼 문자집합의 개념을 합친 것이다.

3) 문자

문자는 쓰기의 기본적인 구성요소다. 하나의 문자는 하나의 알파벳 글자, 숫자, 구두점, 표의문자, 수학 기호, 혹은 그 외에 다른 쓰기의 기본 단위를 표현한다.

4) 글리프, 연자 그리고 표현 형태

글리프는 각 글자를 그리는 특정한 방법이다. 각 문자는 미적인 양식과 스크립트에 따라 여러 가지 글리프를 가진다.

5) 코딩된 문자집합

코딩된 문자집합은 보통 코드 번호로 인덱싱된 배열로 구현된다.

몇 가지 중요한 코딩된 문자집합 표준

  • US-ASCII
  • iso-8859
  • JIS X 0201
  • JIS X 0208과 JIS X 0212
  • UCS

6) 문자 인코딩 구조

문자 인코딩 구조들은 숫자로 된 문자 코드를 콘텐츠 비트들로 변환하고 다른 쪽에서는 그들을 다시 문자 코드로 환원한다. 문자 인코딩 구조는 크게 세 종류로 분류할 수 있다.

  • 고정폭: 각 코딩된 문자를 고정된 길이의 비트로 표현한다. 빠르게 처리될 수 있지만 공간을 낭비할 우려가 있다.
  • 가변폭(비모달): 다른 문자 코드 번호에 다른 길이의 비트를 사용한다.
  • 가변폭(모달): 모달 인코딩은 처리하기 복잡하지만, 복잡한 표기 체계를 효과적으로 지원해 줄 수 있다.

인코딩 구조

  • 8비트
  • UTF-8
  • ISO-2022-jp
  • euc-jp
  • euc-kr

4. 언어 태그와 HTTP

언어 태그는 언어에 이름을 붙이기 위한 짧고 표준화된 문자열이다.

1) Content-Language 헤더

Content-Language 엔터티 헤더 필드는 엔터티가 어떤 언어 사용자를 대상으로 하고 있는지 서술한다. 그러나 단지 여러 언어가 하나의 엔터티에 동시에 사용되었다고 해서 반드시 여러 언어 사용자들을 대상으로 하고 있음을 의미하는 것은 아니다.

2) Accept-Language 헤더

HTTP는 우리에게 우리의 언어 제약과 선호도를 웹 서버에 전달할 수 있게 해준다.

3) 언어 태그의 종류

언어 태그는 다음을 표현하기 위해 사용될 수 있다.

  • 일반적인 언어의 종류
  • 특정 국가의 언어
  • 방언
  • 지방어
  • 그 외의, 다른 언어의 변형이 아닌 표준 언어
  • 비표준 언어

4) 서브 태그

언어 태그는 하이픈으로 분리된 하나 이상의 서브태그로 이루어져 있다.

5) 대소문자의 구분 및 표현

모든 태그는 대소문자가 구분되지 않는다. 관용적으로 언어를 나타낼 때는 소문자를 사용하고, 국가를 나타낼 때는 대문자를 사용한다.

6) IANA 언어 태그 등록

첫 번째와 두 번째 언어 서브태그의 값은 여러 가지 표준 문서와 그것들을 관리하는 조직에 의해서 정의된다.

7) 첫 번째 서브태그: 이름공간

첫 번째 서브태그는 보통 ISO 639 표준 언어 집합에서 선택된 표준화된 언어 토큰이다.

8) 두 번째 서브태그: 이름공간

두 번째 서브태그는 보통 ISO 3166 국가 코드와 지역 표준 집합에서 선택된 표준화된 국가 토큰이다.

9) 나머지 서브태그: 이름공간

8자 이하의 알파벳과 숫자로 이루어져야 한다.

10) 선호 언어 설정하기

웹브라우저 프로필에서 선호 언어를 설정할 수 있다.

11) 언어 태그 참조표

  • IANA -> G-1
  • ISO 639 -> G-2
  • ISO 3166 -> G-3

5. 국제화된 URI

최근에 잘 사용되지 않음

6. 기타 고려사항

1) 헤더와 명세에 맞지 않는 데이터

2) 날짜

3) 도메인 이름

profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글