Unicode.
알아야 될 것만 적도록 한다.
일단 유니 코드란 간단히 말해 숫자와 글자, 즉 키와 값이 1:1로 매핑된 형태의 코드.
즉 아스키 코드로 0x41 = A로 매핑된 것처럼, 아스키 코드로 표현할 수 없는 문자들을 유니 코드라는
이름 아래 전 세계의 모든 문자를 특정 숫자(키)와 1:1로 매핑한 것.
유니 코드는 현재 웬만큼은 다 담겨있다.
유니 코드는 모든 문자에 index를 준 것이고, index를 code point라고 한다.
Ex)'A' => 0x0041 'a' => 0x0061 '가' => 0xac00
#Unicode Block.
유니 코드는 너무 많기에 아스키 코드표처럼 한 눈에 들어오는 테이블은 만들기 어렵다.
블록으로만 나누어놓은 테이블도 상당하다.
U+라는 것이 붙어 있으면 유니 코드란 의미. 아스키 코드의 0x41은 대문자 A, 유니 코드표에서는 U+0041.
가장 보편적인 UTF-8 방식은 유니 코드표의 숫자 키들을 어떻게 표현하느냐에 따라 달린 것.
UTF-8은 가변 바이트를 사용하기에 1바이트로 표현이 충분한 A 같은 경우는 0x41로 표현.
UTF-32 같은 경우 4바이트로 표현하기 때문에 0x00000041.
UTF-8 방식이 효율적이기에 표준으로 많이 쓰인다.
#General Unicode and UTF-8 Unicode.
일반 유니 코드 => 모든 글자를 2바이트로 표현. 전세계 모든 글자들을 한꺼번에 표현할 수 있지만,
인터넷에 HTML 파일로 올릴 수 없고, 웹 페이지 작성에 쓸 수 X.
UTF-8 유니 코드 => 영문,숫자,기호는 1바이트, 한글과 한자 등은 3바이트 표현.
역시 전세계 모든 글자들을 한꺼번에 표현 O.
웹 페이지 작성 O.
#UCS and UTF.
index 표현 방법은 UTF와 UCS 두 가지.
UTF-Unicode Transformation Format, UCS-Universal Character Set.
UTF.
UTF는 몇 비트 단위로 사용해서 index를 나타낼 것인가를 정의.
UTF-8은 8bit씩 늘려가며 index를 나타내는 것.
UTF-16은 16bit씩 index를 나타내고, UTF-32는 32bit씩 index를 나타내는 것.
UCS.
몇 바이트로 index를 표현할 수 있느냐를 나타낸다.
UCS-2는 2byte로 index를 나타낼꺼고, UCS-4는 4byte를 이용해서 index를 나타내는 것.
#UTF-16.
원래는 유니 코드의 index는 2byte로 표현.
유니 코드가 4.0으로 버전 업 되고 나서 0x10FFFF까지 index 등장.
처음에는 UTF-16으로 모든 문자를 나타낼 수 있었으나, 유니 코드 4.0의 등장으로 인해 2byte로는 0x10FFFF 표현 X.
그래서 UTF-16으로는 BMP에 있는 문자들은 2byte로 처리.
BMP보다 더 높은 index를 가진 문자들은 4byte 처리.
즉. 문자 index 0x0000 ~ 0xFFFF까지는 2byte 처리.
문자 index 0x10000 ~ 0x1FFFF까지는 4byte 처리.
Cf) BMP => Basic Multilingual Plane => 2byte로 표현할 수 있는 index를 가진 문자 목록.
#UTF-8.
영미권, 아니 영어가 모국어인 나라의 사람들은 UTF-16보단 UTF-8.
영어의 알파벳은 1byte만 있으면 256개 표현 가능해서 모든 문자 표현 가능.
해결책으로 나온 것이 UTF-8.
알파벳은 1byte로 표현하고, 높은 index를 가진 건 2byte or 3byte 해서 byte를 늘려가면서 사용.
#UTF-32.
그다지 중요도가 있다고는 볼 수 없지만 기본적으로 4byte를 사용.
#Mutual Conversion.
UTF-8,16,32, UCS-2,4는 모두 유니 코드의 문자 index를 나타내기 위한 방법이니까 서로 변환은 당연히 잘 된다.
Cf) 참고... http://www.unicode.org/charts/
'#Tip' 카테고리의 다른 글
Simple Chrome Developer Tools Shortcut. (0) | 2018.05.12 |
---|---|
Filter Bypass. (0) | 2018.05.09 |
Installing jdk and Setting environment variables. (0) | 2018.05.07 |
Burp Suite. (0) | 2018.05.07 |
WireShark and Packet Analysis (0) | 2018.05.03 |