유니코드란? 전 세계 다양한 문자와 기호를 컴퓨터에서 일관되게 표기하기 위한 산업 표준이다.
문자나 기호를 컴퓨터에 보내려면 인코딩(부조화)하여 보내고, 해독할 때는 디코딩하여 처리한다. 인코딩과 디코딩의 기준을 charset이라고 부른다.
charset의 국제 표준이 유니코드이다.
영문 알파벳을 7비트의 이진로 인코딩하는 방식:
코드 포인트에 따라 1byte 부터 4bytes까지 길이를 가변하여 인코딩할 수 있는 방식이다.
각 바이트에 식별자를 넣어 주어 컴퓨터가 인코딩 하려는 문자가 어떤 문자인지 인식하도록 약속한 것이다.
영어 알파벳 A의 유니코드 코드 포인트는 U+0041 이다. 이진 표현은 1000001 이다.
A는 UTF-8 인코딩으로 다음과 같이 표시된다.
빨간색의 0비트는 현재 1바이트 인코딩이 되고 있고, 나머지는 코드 포인트라는 것을 알려주고 있다.
참고로 ASCII 코드는 7비트로 표현되므로, UTF-8에서 모두 1byte 결과로 만들 수 있다. ASCII 127 문자의 이진 표현은 01111111이다.
예시
코
라는 문자의 유니코드 =U+CF54
(이진법 1100-1111-0101-0100) => UTF-8 3bytes 표현해야한다.1110xxxx 10xxxxxx 10xxxxxx // (3bytes의 식별자들이다. 가장 하위 byte의 마지막 x부터 채워 넣는다 11101100 10111101 10010100
모든 현대 언어의 유니코드 대부분을 2bytes로 표현할 수 있다.
바이트의 순서에 따라 UTF-16의 종류도 달라진다.
참고 https://naveenr.net/unicode-character-set-and-utf-8-utf-16-utf-32-encoding/