... | ... | @@ -193,15 +193,16 @@ class StarTest |
|
|
|
|
|
## 질문사항
|
|
|
|
|
|
### 유니코드와 인코딩 방식
|
|
|
유니코드란?
|
|
|
### 유니코드와 인코딩 방식
|
|
|
|
|
|
#### 유니코드란?
|
|
|
유니코드는 기존의 여러 문자 표현 방식들의 문제점을 해결하기 위해서 전 세계의 모든 문자를 컴퓨터로 표현할 수 있게 문자마다 고유의 Character code를 부여하는 방식이다. 그래서 기존에 발생하던 각 언어와 문자 체계에 따른 충돌 문제를 해결하였다. 유니코드를 사용하는 환경에서는 세계 각국의 언어를 깨뜨리지 않고 사용할 수 있다.
|
|
|
|
|
|
코드 포인트
|
|
|
#### 코드 포인트
|
|
|
코드 포인트는 유니코드에서 문자에 매겨진 번호를 의미한다. 표기 방식은 U+0000 으로 Unicode를 의미하는 U+와 코드포인트 값을 16진수로 적는다.
|
|
|
> 알파벳 'A'는 U+0041, 한글 '가'는 U+AC00 으로 표기한다.
|
|
|
|
|
|
유니코드의 구조
|
|
|
#### 유니코드의 구조
|
|
|
UCS(Universal Character Set)는 ISO 10646으로 정의된 문자 인코딩의 국제 표준이다. 유니코드는 UCS의 하위 집합이고, UCS의 구조를 알면 유니코드의 구조를 알 수 있다. 아래 그림은 UCS의 구조와 의미를 정리한 그림이다.
|
|
|
|
|
|

|
... | ... | @@ -212,8 +213,13 @@ UCS(Universal Character Set)는 ISO 10646으로 정의된 문자 인코딩의 |
|
|
|
|
|
유니코드는 2바이트 체계다. 하지만 계산을 해보면 17개의 Plane을 표현하는데 필요한 5 비트, Cell번호를 표현하는데 필요한 16비트를 합쳐 총 21비트가 유니코드의 모든 문자를 표현하기 위해서 필요하다는 것을 알 수 있다. (Group 표현은 Group 00만을 사용하므로 생략한다.)
|
|
|
|
|
|
#### 유니코드와 한글
|
|
|
유니코드는 한글의 표현 방식을 완성형, 조합형 모두 지원한다. 완성형이란 완성된 글자 하나하나를 바로 쓸 수 있도록 번호를 부여하여 저장한 것이고, 조합형은 한글의 초성, 중성, 종성으로 쓰이는 자, 모음을 저장하여 조합하여 쓸 수 있는 방식이다. 현대 한글 11,172자가 완성형 방식 처리에 쓰이고 있어서, 일상 생활의 거의 모든 단어를 표현할 수 있다. 조합형 방식은 자모음 하나 하나를 조합하기 때문에 용량이 더 크다는 문제 때문에 완성형에 없는 옛 한글을 표현하는 용도 이외에는 잘 쓰지 않는다.
|
|
|
|
|
|
유니코드는 ASCII 방식에서 표현하지 못하던 문자까지 표현할 수 있다는 장점을 가졌다. 유니코드의 인코딩 방식은 UTF-8, UTF-16, UTF-32 등이 있고, 가변 길이 인코딩이다. 뒤의 숫자는 기본 표현이 몇 비트로 이루어지는지 차이에 따라서 숫자가 달라진다.
|
|
|
#### 유니코드의 인코딩 방식
|
|
|
여러 인코딩 방식이 있지만 주로 사용하는 UTF-8, UTF-16, UTF-32에 대해서 설명한다.
|
|
|
* **UTF-32**
|
|
|
UTF-32는
|
|
|
|
|
|
* **UTF-8**
|
|
|
UTF-8은 기본 문자 표현에 1byte를 사용한다. 그리고 ASCII랑 호환이 가능하다. 이런 이유로 웹이나 DB에서는 주로 UTF-8을 쓴다. 그리고 NULL 문자가 나오지 않기 때문에 중간에 NULL 값이 있으면 문제가 될 수 있는 자료형에도 이용 가능하다. 알파벳 표현시에는 1byte로 표현하지만 한글은 3byte로 표현한다.
|
... | ... | |