Notice
Recent Posts
Recent Comments
Today
Total
05-02 00:04
Archives
관리 메뉴

Jeongchul Kim

유니코드 Unicode 본문

정보검색-데이터마이닝

유니코드 Unicode

김 정출 2016. 10. 15. 02:55


 

유니코드 Unicode

유니코드

http://www.unicode.org/

유니코드(Unicode)는  전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.


유니코드 2.0

기존의 한글 완성자를 삭제하고, 11,172자의 새 한글 완성자 영역을 새로 지정함.

순서대로 코드를 부여

코드 범위: 가(0xAC00)~힣(0xD7A3)


자모코드

자음 : 0x3131 ~ 0x314E

모음 : 0x314F ~ 0x3163

채움 코드 : 0x3164


유니코드에서 초성/중성/종성 인식

초성 : (( 코드값 - 0xAC00) / 28) /21 ) % 19

중성 : (( 코드값 - 0xAC00) / 28 ) % 21

종성 : (코드값 - 0xAC00) % 28


유니코드 Encoding

UCS-2, UCS-4

Unicode 유니코드를 저장하는 변수의 크기를 정의했으나,

바이트 순서에 대해서 표준화를 하지 못하였다.


파일 처리 프로그램들은 바이트 단위로 동작하므로 문제점이 발생하였다.


UTF

UTF(Unicode Transformation Foramt)

UTF-8( in web ) : MIN 8 bit, MAX 32bit (1 Byte * 4)

UTF-16( in Window, java) : MIN  16bit, MAX 32bit (2byte * 2)

UTF-32( in Unix ) : MIN 32bit, MAX 32bit (4byte * 1)


UTF-8

유니코드 한 문자를 나타내기 위해 1바이트에서 4바이트 까지를 사용한다.

000000부터 00007F 범위에 있는 ASCII 문자들은 UTF-8에서 1바이트 만으로 표시된다.

한국어는 BMP 안에 속하며, 3Byte 표기로 000800-00FFFF에 속한다.

http://www.unicode.org/charts/PDF/UAC00.pdf


UTF-8 변환

Unicode ‘위' C704 -> UTF-8 EC 9C 84


1. 2진수로 표현

C704 = 1100 0111 0000 0100


2. 뒤에서 6자리씩 끊어서 표기한다.

1100 011100 000100


3. 첫 바이트는 ‘1’로 표시하고, 필요한 바이트 수를 결정한다.

110(2Byte), 1110(3Byte)


11101100 011100 000100


4. 16 진수로 표시

EC 9C 84


UTF-8 장점, 단점

장점

하위 호환성(ASCII)

XML문서의 표준 인코딩

모든 유니코드 문자 표현 가능

미리 바이트 크기를 알 수 있다.

간단한 비트 연산만 사용해서 효율적이다.


단점

크기가 크다 (가변적 인코딩)

문자열 처리가 간단하지 않다.


UTF-16

UTF-16은 주로 사용되는 기본 다국어 평면 (BMP, Basic multilingual plane)에 속하는 문자들은

그대로 16비트 값으로 인코딩이 되고 그 이상의 문자는 특별히 정해진 방식으로 32비트로 인코딩이 된다.


인코딩의 기본 단위는 16비트, 즉 2 Byte이다.


기본 다국어 평면(BMP)

기본 다국어 평면(BMP) 2 Byte 인코딩으로 대부분의 언어를 포함한다.

63,488(=65,536-2,048) 문자 표현 가능하다.

* 대행 문자 영역 : 2048개


기본 다국어 평면은 U+0000 에서 U+FFFF 에 놓인 문자를 담고 있다. 이 영역에는 우리가 쉽게 생각할 수 있는 문자들이 포함되며, 한글, 한자 등은 모두 여기에 포함되어 있다


보충 다국어 평면(SMP)

65,536 ~ (2^20 = 2^16 * 16개)

제 1 보충 다국어 평면 :  다국어 보충, 음악 기호, 수학 기호

제 2 보충 다국어평면 : 한중일 통합 한자

제 3 보충 다국어평면 : 상형문자

제 4 ~ 13 보충 다국어평면 : 문자 미지정

제 14 보충 다국어평면 : 특수 목적 제어용 문자

제 15~16 다국어 평면 : 사용자 영역 할당


Endian(엔디안)

컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의

  연속된 대상을 배열하는 방법을 뜻하며, 바이트를 배열하는 방법을

  바이트 순서(Byte order) 라 한다.


엔디안 종류 : Little Endian, Middle Endian, Big Endian


Big-Endian BE : bit의 큰 단위가 앞에 나옴

Little-Endian LE : bit의 작은 단위가 앞으로 나옴


UTF-16 BE, LE

UTF 16은 2Byte * 2개로 엔디안 표기법에 따라 2가지의 방식이 존재한다.

UT-16 BE, UTF-16 LE



Surrogate

기본 다국어 평면에서 서러게이트 문자(surrogate)들이 준비되어 있어 16비트 이상의 문자를 표현할 때를 대비해 놓았다.

Surrogate <High, Low> : 1024 * 1024

Hight Surrogate : 00D800 ~ 00DBFF

Low Surrogate : 00DC00 ~ 00DFFF


유니코드 문자 영역에서 상위 서러게이트는 U+D800 에서 U+DBFF 까지의 값을 갖는다. 즉 최상위비트 6개의 값이 그림에서 보듯이 110110 으로 일정하다.

마찬가지로 하위 서러게이트는 U+DC00 에서 U+DFFF 까지의 값을 가지며 최상위비트 6개의 값은 110111 이 된다. 각 서러게이트 문자는 하위 10비트씩의 자유도를 갖는다.

따라서 주어진 문자를 10비트씩 두조각을 내서 상위 서러게이트와 하위 서러게이트에 배정한 것이다.

여기서 다음을 만족한다.

ZZZZ=zzzzz-1.


BOM(Byte Order Mark)

Big Endia, Little Endian, UTF-8 인지 구분

파일 시작 부분에 2~3 byte 추가

Big Endian : FE FF

Little Endian : FF FE

UTF-8 : EF BB BF

High-surrogate : (unicode - 0x10000) / 0x400 + 0xD800;

Low-surrgoate : (unicode - 0x10000) % 0x400 + 0xDC00;


UTF-16 surrogate -> UTF-32

CodeValue = (High-surrogate - 0xD800) * (Low-surrgoate - 0xDC00) + 0x10000


UTF-32

4Byte로 모든 유니코드 문자를 표현

고정 길이 인코딩이다.


UTF 정리


UTF Encoding

‘가'

smallest code point

Largest code point

Code Unit Size

MIN

MAX

UTF-8

EA B0 80

0000

10FFFF

8bits

1

4

UTF-16BE

AC 00

0000

10FFFF

16bits

2

4

UTF-16LE

00 AC

0000

10FFFF

16bits

2

4

UTF-32BE

00 00 AC 00

0000

10FFFF

32bits

4

4

UTF-32LE

00 AC 00 00

0000

10FFFF

32bits

4

4




'정보검색-데이터마이닝' 카테고리의 다른 글

Stemming  (0) 2016.10.16
정보 검색 개요  (0) 2016.10.16
한글 인코딩과 변환 코딩  (0) 2016.10.15
한글 코드  (1) 2016.10.15
Comments