코드 포인트

코드 포인트(code point) 또는 코드 위치(code position)는 테이블 내의 특정 위치로, 해당 위치에 의미가 할당된 것이다. 테이블은 1차원(열), 2차원(스프레드시트의 셀과 유사), 3차원(통합 문서의 시트) 등 여러 차원으로 존재할 수 있다.

기술적으로, 코드 포인트는 정량화된 n차원 공간의 고유한 위치로, 해당 위치에 의미론적 의미가 할당된다. 테이블은 이산적(정수)이고 양의 위치(1, 2, 3, 4이지만 분수는 아님)를 갖는다.

코드 포인트는 수많은 공식 정보 처리 및 통신 표준에서 사용된다.ETSI TS 101 773 (section 4), https://www.etsi.org/deliver/etsi_ts/101700_101799/101773/01.02.01_60/ts_101773v010201p.pdfRFC4190 (section 1), https://datatracker.ietf.org/doc/html/rfc4190 예를 들어 ITU-T 권고 T.35는 통신 장비(원래 팩스 기계)가 제조 또는 작동 국가를 나타낼 수 있도록 하는 일련의 국가 코드를 포함한다. T.35에서 아르헨티나는 코드 포인트 0x07로, 캐나다는 0x20으로, 감비아는 0x41 등으로 표시된다.

 문자 인코딩에서 
코드 포인트는 일반적으로 문자 인코딩에 사용되며, 여기서 코드 포인트는 특정 문자에 매핑되는 숫자 값이다. 문자 인코딩에서 코드 포인트는 일반적으로 단일 자소를 나타내며—대개 글자, 숫자, 문장 부호, 또는 공백 문자—때때로 기호, 제어 문자 또는 서식을 나타낸다. 주어진 인코딩/문자 세트 내의 모든 가능한 코드 포인트 세트는 해당 인코딩의 코드 공간을 구성한다.

예를 들어, 문자 인코딩 방식인 ASCII는 0hex에서 7Fhex 범위의 128개 코드 포인트를 포함하고, 확장 ASCII는 0hex에서 FFhex 범위의 256개 코드 포인트를 포함하며, 유니코드는 0hex에서 10FFFFhex 범위의 개 코드 포인트를 포함한다. 유니코드 코드 공간은 17개의 평면(기본 다국어 평면과 16개의 보조 평면)으로 나뉘며, 각 평면은  (= 216)개의 코드 포인트를 갖는다. 따라서 유니코드 코드 공간의 총 크기는 17 ×  = 이다.

 유니코드에서 
유니코드에서 특정 비트 시퀀스를 코드 단위라고 부른다. UCS-4 인코딩의 경우 모든 코드 포인트는 4-바이트 (옥텟) 이진수로 인코딩되는 반면, UTF-8 인코딩에서는 서로 다른 코드 포인트가 1바이트에서 4바이트 길이의 시퀀스로 인코딩되어 자기 동기 코드를 형성한다. 자세한 내용은 유니코드 인코딩 비교를 참조하면 된다.
코드 포인트는 일반적으로 추상적인 문자에 할당된다. 추상 문자는 그래픽 글리프가 아니라 텍스트 데이터의 단위이다. 그러나 코드 포인트는 향후 할당을 위해 예약되거나(유니코드 코드 공간의 대부분은 할당되지 않음) 다른 지정된 기능이 부여될 수도 있다.

코드 포인트와 해당 추상 문자 간의 구별은 유니코드에서는 뚜렷하지 않지만, 단일 코드 공간에 대해 수많은 코드 페이지가 존재할 수 있는 다른 많은 인코딩 방식에서는 분명하다.

 역사 
코드 포인트의 개념은 디지털 정보 처리 및 디지털 통신의 초기 표준으로 거슬러 올라간다.

유니코드에서 코드 포인트는 1980년대 문자 인코딩 개발자들이 직면했던 어려운 수수께끼에 대한 유니코드의 해결책의 일부이다. 만약 더 큰 문자 세트를 수용하기 위해 문자당 비트를 더 추가했다면, 그 설계 결정은 당시 컴퓨터 사용자 대다수를 차지했던 로마자 사용자의 경우 추가 비트가 항상 0으로 채워질 것이기 때문에, 당시 부족했던 컴퓨팅 자원의 용납할 수 없는 낭비가 되었을 것이다. 코드 포인트는 문자와 특정 비트 시퀀스 간의 직접적인 일대일 대응이라는 오래된 개념을 깨뜨림으로써 이 문제를 피한다.

 같이 보기 
 결합 문자
 대체 문자
 텍스트 기반 (컴퓨팅)
 유니코드 콜레이션 알고리즘

 각주 

 외부 링크 
 Codepoints.net, 문자와 유니코드에 관한 모든 것을 다루는 사이트

분류:문자 인코딩