더북(TheBook)


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으로 인코딩되어 메모리에 담긴 모습입니다.

054_1

그림 4-5 문자 '가' UTF-16


그런데 값이 매우 낯익습니다. 문자 ‘가’의 코드 포인트인 AC00을 바이트 단위로 순서만 바꾸었네요. 문자 ‘가’는 기본 다국어 평면에 있으므로 2바이트로 표현됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.