글꼴이나 스타일에 독립적 (같은 글자라도 단어에서 어디에 위치하느냐에 따라 다른 모양을 가질 수도 있다)
글리프
각 글자를 그리는 특정한 방법
글리프 하나를 다른 것으로 바꾸었을 때 텍스트의 의미가 변하면 두 글리프는 서로 다른 글자
코딩된 문자
각 글자에 할당된 유일한 숫자
US-ASCII: 코드 값 0-127만 사용 (코드 공간 전체를 7비트로 표현, HTTP 메세지(헤더, URI)가 사용)
iso-8859:
국제적인 글쓰기를 위해 필요한 글자들을 하이 비트로 추가한, US-ASCII의 8비트 확대 집합들
지역에 따라 문자집합을 제공 (iso-8859-1: 서유럽어(HTML을 위한 기본 문자집합), iso-8859-2: 중앙/동유럽어 등)
USC(Unicode):
국제 문자 세트로 전 세계 글자를 하나의 코딩된 문자집합으로 통합하기 위해 만들어진 표준
HTTP는 여러 언어와 문자로 된 국제 문서들의 처리 및 전송을 지원해야한다.
국제화 관련 헤더
서버 -> 클라이언트: 각 문서의 문자와 언어를 알려준다. Content-Type charset 파라미터, Content-Language(요청 & 응답 헤더 모두에 사용)
클라이언트 -> 서버: 클라이언트가 어떤 Charset 인코딩 알고리즘과 언어를 이해하는지(선호하는지) 알려준다. Accept-Charset, Accept-Language
+👀) Content-Language VS. Accept-Lanague
https://stackoverflow.com/questions/6157485/what-are-content-language-and-accept-language
문자집합과 HTTP
Charset
문자집합과 인코딩의 동작
1) 비트 -> 특정 문자로 식별될 수 있는 문자코드로 변환 2) 문자코드 -> 코딩된 문자집합의 특정 요소를 선택
MIME Charset
웹 서버는 Content-Type 헤더에서 Charset 매개변수를 찾거나, 콘텐츠에서 문자집합을 추측한다(HTML의 태그 등. 추측 못하면 ios-8859-1 가정)
다중 언어 문자 인코딩에 대한 지침
문자
글리프
코딩된 문자
코드 공간
코드 너비
사용 가능 문자 집합
코딩된 문자집합
문자 인코딩 구조
종류
1) 고정폭 각 코딩된 문자들을 고정된 길이의 비트로 표현 예시) 8비트: 각 문자 코드를 대응하는 8비트 값으로 인코딩(iso-8859 에서 사용)
2) 가변폭(비모달) 다른 문자 코드 번호에 다른 길이의 비트를 이용
3) 가변폭(모달)
+👀) UTF-8 / EUC-KR
UTF-8 가변폭 문자 인코딩
인코딩 과정
+) 왜 prefix로 '10'을 사용할까? https://stackoverflow.com/questions/53009692/utf-8-encoding-why-prefix-10
EUC-KR
+👀) 간단한 인코딩 역사 변화
CP 문자셋(2바이트)는 자국에서만 쓸 수 있고, 다른 나라와 호환이 되지 않는다. 그래서 모든 언어를 나타내기 위해 유니코드 만듦. 유니코드 인코딩하기 위해 UTF-16이라는 가변 길이 인코딩을 썼는데, 기본 다국어 평면(https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%ED%8F%89%EB%A9%B4#%EA%B8%B0%EB%B3%B8_%EB%8B%A4%EA%B5%AD%EC%96%B4_%ED%8F%89%EB%A9%B4)에 속하는 문자는 2바이트, 다른 건 4바이트로 인코딩. 기존에 1바이트로 문자를 나타낼 수 있던 미국/유럽권에서는 용량이 2배로 늘어난셈. 그래서 UTF-8 등장. 유럽권은 기존 1바이트, 나머지는 2,3,4 바이트로 (한국어는 3바이트)
언어 태그와 HTTP
언어 태그: 언어에 이름을 붙이기 위한 표준화된 문자열 하이픈으로 분리된 하나 이상의 서브태그로 이루어져 있다. 언어는 소문자, 국가는 대문자를 관용적으로 쓰지만 모든 태그는 대소문자 구분이 없다. (한국 ko-KR, 미국 en-US)
Content-Language 헤더 엔티티가 어떤 언어 사용자를 대상으로 하는지
Accept-Language 헤더 클라이언트가 웹 서버에게 언어 제약/선호도를 전달하기 위해 사용
국제화된 URI
조작하고, 공유하기 쉽게 하기 위하여 URI 설계자들은 매우 제한된 공통 문자집합을 선택했다(기본적인 라틴 알파벳 문자, 숫자, 특수문자)
URI에서 사용할 수 있는 US-ASCII 문자들의 부분집합:
+👀)
브라우저 URL에 한글이 들어갈 때
실제로 URL이 인코딩된 결과 https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=%EA%B0%80 가 => %EA%B0%80