GBK (문자 인코딩)

**GBK**(Guójiā Biāozhǔn Kuòzhǎn)는 중화인민공화국에서 사용되는 간체자용 GB 2312 문자 집합의 확장이다. 여기에는 , 즉 ISO/IEC 10646:1993 또는 유니코드 1.1에 있는 모든 통합 한중일 통합 한자가 포함된다. 1993년 초기 출시 이후, GBK는 마이크로소프트에 의해 **[[코드 페이지 1386|코드 페이지 936/1386]]**으로 확장되었고, 이는 다시 **[[#GBK 1.0|GBK 1.0]]**으로 확장되었다. **GBK**는 또한 마이크로소프트 매핑의 IANA 등록 인터넷 이름이기도 하다. 이는 주로 0x80의 단일 바이트 유로 기호에서 다른 구현과 다르다.

GB는 중국어로 국가 표준을 의미하는 궈뱌오(Guójiā Biāozhǔn)를 줄인 말이며, K는 확장(扩展 kuòzhǎn)을 의미한다. GBK는 구 표준인 를 번체자로 확장했을 뿐만 아니라, 1981년 가 제정된 이후 간략화된 한자도 포함했다. GBK의 등장으로 전 중국 총리 주룽지의 이름에 있는 镕 (róng) 글자처럼 이전에는 표현할 수 없었던 특정 이름이 이제 표현 가능하게 되었다.

, GBK는 중국 및 관련 지역에서 사용되는 인코딩 중 세 번째로 인기 있는 인코딩이며(UTF-8 및 하위 집합  다음), 웹 서버의 1.9%가 GBK를 선언하는 페이지를 제공한다. 그러나 모든 주요 웹 브라우저는 Safari와 Edge에서 `GB_2312` 레이블을 제외하고 GB2312로 표시된 문서를 GBK로 표시된 것처럼 디코딩한다. 함께, GBK와  인코딩은 중국 및 관련 지역에서 총  5.5%의 점유율을 차지한다. 전 세계적으로 GBK는 전체 웹 페이지의 0.07% 미만이며 GBK+GB2312는  0.2%를 차지한다.

## 역사
1993년, 유니코드 1.1 표준이 발표되었으며, 중국 대륙, 중화민국, 일본, 한국에서 사용되는 20,902개 문자가 포함되었다. 이어서 중국은 유니코드 1.1에 해당하는 궈뱌오 표준인 을 발표했다.

**GBK** 문자 집합은 1993년에 의 확장으로 정의되었으며, GB 2312에서 사용되지 않는 코드 포인트를 통해 GB 13000.1-93의 문자도 포함했다. 따라서 GBK는 GB 2312와 하위 호환된다. GBK는 GB 13000.1-93의 규범적 부록으로 정의되었다.

마이크로소프트는 윈도우 95와 윈도우 NT 3.51에서 GBK를 **코드 페이지 936**으로 구현했다. GBK는 공식 표준은 아니었지만, 윈도우 95의 광범위한 사용으로 GBK는 사실상의 표준이 되었다. GBK는 유니코드 1.1과 GB 13000.1-93에 정의된 모든 한자를 포함했지만, 이 표준들은 다른 코드 테이블을 사용했다. 그 존재의 주된 이유는 단순히 GB 2312-80과 GB 13000.1-93 사이의 간극을 메우기 위함이었다.

1995년, 중국 국가 정보 기술 표준화 기술 위원회는 코드 페이지 936의 약간 확장된 버전인 중국 내부 코드 확장 사양() 버전 1.0을 제정했는데, 이를 **GBK&nbsp;1.0**으로 알려져 있다. 새로 추가된 95개의 문자는 GB&nbsp;13000.1-1993에는 없었으며, 잠정적으로 유니코드 사설 사용 영역(PUA) 코드 포인트에 할당되었다.

마이크로소프트는 나중에 코드 페이지 936에 유로 기호를 추가하고 0x80 코드를 할당했다. 이것은 GBK&nbsp;1.0에서는 유효한 코드 포인트가 아니다.

2000년에  표준이 발표되었으며, GBK&nbsp;1.0을 대체하면서도 호환성을 유지했다. 이 표준은 한자의 정의 수를 늘리고 4바이트 문자 공간의 구현을 통해 가능한 문자 수를 확장했다. GB&nbsp;18030의 1바이트 및 2바이트 문자로 구성된 하위 집합은 때때로 **GBK**라고도 불린다. 그러나 일부 문자가 이제 유니코드에 정의되어 있으므로 유니코드와의 매핑은 약간 변경되었다. 최신 표준인 GB&nbsp;18030-2005에서는 24개 문자만이 여전히 유니코드 PUA에 매핑되어 있다(GB 18030#PUA 참조).

2002년, **GBK**는 IANA 문자 집합으로 등록되었다. 이 등록은 코드 페이지 936 매핑과 CP936/MS936 별칭을 사용하지만, GBK&nbsp;1.0 사양을 참조한다. 2015년에 발표된 W3C의 기술 권고는 **GBK** 인코더를 단일 바이트 유로 기호가 있고 4바이트 시퀀스가 없는 GB&nbsp;18030 인코더로 정의한다(W3C의 **GBK** 디코더 사양은 이러한 제한이 없으며, , 즉 유니코드 전체와 동일한 문자 범위를 디코딩한다).

## 인코딩
문자는 1 또는 2바이트로 인코딩된다. `00`–`7F` 범위의 바이트는 ASCII에서와 동일한 의미를 갖는 단일 바이트이다. 엄밀히 말하면, 이 범위에는 95개의 문자와 33개의 제어 문자가 있다.

상위 비트가 설정된 바이트는 2바이트 중 첫 번째 바이트임을 나타낸다. 느슨하게 말하면, 첫 번째 바이트는 `81`–`FE` 범위(즉, `80` 또는 `FF`는 아님)에 있으며, 두 번째 바이트는 일부 영역의 경우 `7F`를 제외한 `40`–`A0`이고 다른 영역의 경우 `A1`–`FE`이다.

더 구체적으로, 다음 바이트 범위가 정의된다.

### 레이아웃 다이어그램
그래픽 형태로, 다음 그림은 가능한 모든 64K 2바이트 코드의 공간을 보여준다. 녹색 및 노란색 영역은 GBK 코드 포인트에 할당되며, 빨간색은 사용자 정의 문자용이다. 색상이 없는 영역은 유효하지 않은 바이트 조합이다.

파일:GBK encoding.svg

## 다른 인코딩과의 관계
이전 섹션에서 GBK/1 및 GBK/2로 표시된 영역은 그 자체로 일반적인 인코딩인 이며, GBK/1은 한자 이외의 영역이고 GBK/2는 한자 영역이다. GB 2312, 또는 더 정확하게는 EUC-CN 인코딩은 GR에 로드된 모든 94² ISO-2022 문자 집합처럼 `A1`–`FE` 범위에서 두 바이트를 취한다. 이는 위 그림의 오른쪽 아래 사분면에 해당한다. 그러나 GB 2312는 `AA`–`B0` 및 `F8`–`FE`에 위치한 행에 어떤 코드 포인트도 할당하지 않았지만, 그 영역을 확보해 두었다. GBK는 이 행에 확장을 추가했다. 두 개의 간극이 사용자 정의 영역으로 채워진 것을 볼 수 있다.

더 중요한 것은 GBK가 바이트 범위를 확장했다는 점이다. ISO-2022 GR 범위에 2바이트 문자가 있으면 94²=8,836가지 가능성으로 제한된다. 그래픽 및 제어 문자에 대한 엄격한 영역의 ISO-2022 모델을 포기하면서도 낮은 바이트가 1바이트 문자이고 높은 바이트 쌍이 문자를 나타내는 기능을 유지하면 잠재적으로 128²=16,384개의 위치를 가질 수 있다. GBK는 그 중 일부를 차지하여 첫 번째 바이트의 범위를 `A1`–`FE`(각 바이트에 94가지 선택)에서 `81`–`FE`(126가지 선택)로, 두 번째 바이트는 `40`–`FE`(191가지 선택)로 확장하여 총 24,066개의 위치를 제공한다.

마이크로소프트의 코드 페이지 936은 일반적으로 GBK로 간주된다. 그러나 GBK 1.0에 추가된 95개의 PUA 문자는 코드 페이지 936에 포함되지 않는다. 코드 페이지 936에는 GBK 1.0에는 없는 0x80의 단일 바이트 유로 기호도 있다.

GBK의 후속인 은 두 번째 바이트에 사용할 수 있는 나머지 범위(–)를 사용하여 GBK를 하위 집합으로 유지하면서 가능한 문자 수를 더욱 확장한다.

## 각주

## 내용주

## 외부 링크
* [[표의문자 연구 그룹]이 제공하는 GBK 1.0 사양 스캔본]
* ICU의 권위 있는 GBK 매핑 - GB18030 데이터의 일부 
* 마이크로소프트의 GBK 참조 페이지
* GBK를 유니코드로 매핑 참고: 이것은 21791개의 2바이트 코드 포인트, 96개의 단일 바이트 그래픽 문자, 33개의 제어 문자에 대한 항목을 포함하는 마이크로소프트 코드 페이지 936이다. 이는 21886개의 문자를 가진 GBK와 정확히 같지 않다.
* GBK 코드 테이블 참고: 이 GBK 인코딩 페이지는 2곳을 제외하고 완전히 채워진 사용 가능한 코딩 공간을 보여주며, 총 32256개의 글리프(단일 바이트 ASCII 코드 미포함 시 32352개)로 23940개 또는 21886개보다 많다. 이 테이블의 실제 렌더링은 브라우저의 GBK 디코더에 따라 달라진다.

분류:윈도우 코드 페이지
분류:중국어 문자 인코딩