유니코드 Unicode 유니코드(Unicode)는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다. 기존의 한글 완성자를 삭제하고, 11,172자의 새 한글 완성자 영역을 새로 지정함. 순서대로 코드를 부여 코드 범위: 가(0xAC00)~힣(0xD7A3) 자모코드 자음 : 0x3131 ~ 0x314E 모음 : 0x314F ~ 0x3163 채움 코드 : 0x3164 유니코드에서 초성/중성/종성 인식 초성 : (( 코드값 - 0xAC00) / 28) /21 ) % 19 중성 : (( 코드값 - 0xAC00) / 28 ) % 21 종성 : (코드값 - 0xAC00) % 28 Unicode 유니코드를 저장하는 변수의 크기를 정의했으나, 바이트 순서에 대해서 표준화를 하지 못하였다. 파일 처리 프로그램들은 바이트 단위로 동작하므로 문제점이 발생하였다. 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) 유니코드 한 문자를 나타내기 위해 1바이트에서 4바이트 까지를 사용한다. 000000부터 00007F 범위에 있는 ASCII 문자들은 UTF-8에서 1바이트 만으로 표시된다. 한국어는 BMP 안에 속하며, 3Byte 표기로 000800-00FFFF에 속한다. http://www.unicode.org/charts/PDF/UAC00.pdf 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 장점 하위 호환성(ASCII) XML문서의 표준 인코딩 모든 유니코드 문자 표현 가능 미리 바이트 크기를 알 수 있다. 간단한 비트 연산만 사용해서 효율적이다. 단점 크기가 크다 (가변적 인코딩) 문자열 처리가 간단하지 않다. UTF-16은 주로 사용되는 기본 다국어 평면 (BMP, Basic multilingual plane)에 속하는 문자들은 그대로 16비트 값으로 인코딩이 되고 그 이상의 문자는 특별히 정해진 방식으로 32비트로 인코딩이 된다. 인코딩의 기본 단위는 16비트, 즉 2 Byte이다. 기본 다국어 평면(BMP) 2 Byte 인코딩으로 대부분의 언어를 포함한다. 63,488(=65,536-2,048) 문자 표현 가능하다. * 대행 문자 영역 : 2048개 기본 다국어 평면은 U+0000 에서 U+FFFF 에 놓인 문자를 담고 있다. 이 영역에는 우리가 쉽게 생각할 수 있는 문자들이 포함되며, 한글, 한자 등은 모두 여기에 포함되어 있다 65,536 ~ (2^20 = 2^16 * 16개) 제 1 보충 다국어 평면 : 다국어 보충, 음악 기호, 수학 기호 제 2 보충 다국어평면 : 한중일 통합 한자 제 3 보충 다국어평면 : 상형문자 제 4 ~ 13 보충 다국어평면 : 문자 미지정 제 14 보충 다국어평면 : 특수 목적 제어용 문자 제 15~16 다국어 평면 : 사용자 영역 할당 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 바이트를 배열하는 방법을 바이트 순서(Byte order) 라 한다. 엔디안 종류 : Little Endian, Middle Endian, Big Endian Big-Endian BE : bit의 큰 단위가 앞에 나옴 Little-Endian LE : bit의 작은 단위가 앞으로 나옴 UTF 16은 2Byte * 2개로 엔디안 표기법에 따라 2가지의 방식이 존재한다. UT-16 BE, UTF-16 LE 기본 다국어 평면에서 서러게이트 문자(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. 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 4Byte로 모든 유니코드 문자를 표현 고정 길이 인코딩이다. 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유니코드
유니코드 2.0
유니코드 Encoding
UCS-2, UCS-4
UTF
UTF-8
UTF-8 변환
UTF-8 장점, 단점
UTF-16
기본 다국어 평면(BMP)
보충 다국어 평면(SMP)
Endian(엔디안)
UTF-16 BE, LE
Surrogate
BOM(Byte Order Mark)
UTF-32
UTF 정리
'정보검색-데이터마이닝' 카테고리의 다른 글
Stemming (0) | 2016.10.16 |
---|---|
정보 검색 개요 (0) | 2016.10.16 |
한글 인코딩과 변환 코딩 (0) | 2016.10.15 |
한글 코드 (1) | 2016.10.15 |