유니코드 Unicode
유니코드
유니코드(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 |
유니코드 Unicode
유니코드
유니코드(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 |