3.2UTF-16
UTF-16도 유니코드 인코딩 방식 중 하나로 2바이트 단위로 문자를 표현합니다. 해당 문자가 기본 다국어 평면에 있으면 2바이트로 인코딩되고, 그렇지 않으면 4바이트로 인코딩됩니다. 코드 유닛의 크기는 16비트입니다.
char16_t * str2 = u"가";
문자열 "가" 앞에 붙은 소문자 u는 UTF-16으로 인코딩하겠다는 의미입니다. char16_t는 C++ 언어에서 UTF-16 인코딩 방식으로 변환된 데이터를 담기 위해 만들어진 자료형으로 2바이트입니다. 그러면 문자 ‘가’는 메모리에 어떻게 저장되어 있을까요?
그림 4-5는 문자 ‘가’가 UTF-16으로 인코딩되어 메모리에 담긴 모습입니다.
그림 4-5 문자 '가' UTF-16
그런데 값이 매우 낯익습니다. 문자 ‘가’의 코드 포인트인 AC00을 바이트 단위로 순서만 바꾸었네요. 문자 ‘가’는 기본 다국어 평면에 있으므로 2바이트로 표현됩니다.