더북(TheBook)


3.1UTF-8


UTF-8(Universal Coded Character Set Transformation Format–8 bit)은 유니코드 인코딩 방식 중 하나로 유니코드 문자 하나를 1바이트에서 4바이트 사이에서 표현합니다. 유니코드 코드 포인트가 U+0000 ~ U+007F는 1바이트, U+0080 ~ U+07FF는 2바이트, U+0800 ~ U+FFFF는 3바이트, 나머지는 4바이트로 표현합니다. 문자에 따라 바이트 수가 달라지므로 가변 길이 인코딩 방식이라고 부릅니다.

char * str1 = u8"가";


문자열 "가" 앞에 붙은 u8은 UTF-8을 의미합니다. str1은 UTF-8로 인코딩된 문자열
"가"가 저장된 메모리 공간을 가리킵니다. 주목해야 할 점은 유니코드인데도 1바이트짜리 char 자료형에 데이터를 담는다는 점입니다. 문자 ‘가’의 코드 포인트 U+AC00은 U+0800 ~ U+FFFF 사이의 수이므로 3바이트로 표현될 것입니다. 실제로 그런지 메모리를 직접 살펴보겠습니다.

그림 4-4는 UTF-8로 인코딩된 문자 ‘가’가 실제 메모리에 어떻게 저장되어 있는지 보여 줍니다. 예상대로 3바이트로 표현되어 있습니다(메모리 주소는 큰 의미가 없습니다).

052_1

그림 4-4 문자 '가' UTF-8

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