char 타입 - 알파벳 기준
ASCII 인코딩을 사용 문자를 비트 상태와 대응
알파벳 대소문자와 숫자, 특수문자, 제어문자
문자의 개수가 128개 - 7비트 (맨 왼쪽 비트는 0으로 설정)
char 두개를 이어서 사용 - 한글이나 한자 등 (유니코드 체계 탄생)
유니코드 - 모든 문자들에게 코드를 부여(순수하게 번호)
실제 컴퓨터의 타입으로는 UTF(Unicode Transformation Format)-N으로 대응 (UTF-8, UTF-16, UTF-32)
UTF-N
정확한 의미는 N 비트의 배수로 한 문자를 표현
UTF-8에서 영어는 ASCII와 동일하게 1바이트만으로 한글의 경우 한 글자가 3바이트를 차지하게 된다.
UTF-16의 경우 알파벳이나 한글 모두 한글자가 2바이트, 대응할 수 없는 문자의 경우 4바이트로 표시
UTF-32는 모든 문자에 대해 4바이트 너무 큰 용량을 차지하기 때문에 많이 사용X
UTF-8과 UTF-16은 문화권에 대해 선호도 달라짐
알파벳은 UTF-8, 우리나라의 경우 UTF-8에서 3바이트 UTF-16에 비해 효율이 좋지X
UTF-8은 글자의 수를 셀 경우 각 글자마다 바이트 크기가 다르기 때문에 많은 연산 요구
UTF-16은 글자 하나가 2바이트 공간 절약, 글자 수를 셀 경우에도 고속으로 처리 (한글에서만)
UTF-16 / UTF-32 지원하는 데이터 타입 (wchar_t)
VC++의 경우 UTF-16 / UTF-32에 대응 wchar_t는 2바이트 UTF-16을 지원(UCS-2를 지원, UTF-16을 포함)
GCC의 경우 wchar_t는 4바이트 UTF-32를 지원. 플랫폼간 문자 타입 통일X
Wide Character를 표현하기 위해 L매크로 사용할 수 있음. 'A' char타입 L'A' wchar_t 타입
유니코드에서 완성형 한글의 코드 범위는 0xAC00 ~ 0xD7A3