GB 18030

GB 18030은 중국 정부 표준으로, 정보 기술 – 중국어 코드 문자 집합으로 설명되며 중국 내 소프트웨어에 필요한 언어 및 문자 지원을 정의한다. GB18030은 GB2312를 대체하는 중화인민공화국(PRC)의 공식 문자 집합에 대한 등록된 인터넷 이름이다. 유니코드 변환 형식 (즉, 모든 유니코드 코드 포인트의 인코딩)으로서, GB18030은 간체자와 정체자를 모두 지원한다. 또한 GB/T 2312, CP936, 및 GBK 1.0을 포함한 레거시 인코딩과도 호환된다.

유니코드 컨소시엄은 이 중국 표준의 최신 버전인 GB 18030-2022가 이전 버전인 GB 18030-2005에서 "33개의 다른 문자와 55개의 코드 위치를 포함하는" "파괴적인 변경"을 도입했다고 구현자들에게 경고했다. GB 18030-2022는 2023년 8월 1일부터 시행되었다. 이는 ICU 73.2 및 자바 21에 구현되었고, 이전 자바 8, 11, 17 (LTS 릴리스) 및 20.0.2로 백포트되었다.

인코딩 방식 외에도 이 표준은 어떤 추가 스크립트와 언어가 표현되어야 하는지, 그리고 이 표준이 누구에게 적용되는지에 대한 요구 사항을 포함한다. 그러나 이 표준은 중국어 한자에 대한 공식 문자 형태를 정의하지 않는다. 이는 통용규범한자표에 표준화되어 있다.

 역사 

GB18030 문자 집합은 공식적으로 "중국 국가 표준 GB 18030-2005: 정보 기술—중국어 코드화 문자 집합"이라고 불린다. GB는 ()의 약어로, 중국어로 국가 표준을 의미한다. 이 표준은 2005년 11월 8일 베이징의 중국 표준 출판사에서 발행되었다. 표준의 일부만 의무 사항이다. 2006년 5월 1일부터 PRC에서 판매되는 모든 소프트웨어 제품에 대해 의무 하위 집합 지원이 공식적으로 요구된다.

"중국 국가 표준 GB 18030-2000: 정보 기술—정보 교환을 위한 중국어 이데오그램 코드화 문자 집합—기본 세트 확장"으로 알려진 이 표준의 이전 버전은 2000년 3월 17일에 발행되었다. 인코딩 방식은 새 버전에서도 동일하며, GB-유니코드 매핑의 유일한 차이점은 GB 18030-2000이 문자 (ḿ)를 개인 사용 코드 포인트 U+E7C7에 매핑하고, 문자 (글리프 지정 없이)를 U+1E3F (ḿ)에 매핑한 반면, GB 18030-2005는 이 두 매핑 할당을 교환한다는 것이다. 한중일 통합 한자 확장 B의 출현과 같이 유니코드의 업데이트로 인해 더 많은 코드 포인트가 문자와 연결되었다. 중국의 소수민족이 사용하는 일부 문자, 예를 들어 몽골 문자 및 티베트 문자 (GB 16959-1997 및 GB/T 20542-2006)도 추가되었으며, 이는 표준 이름 변경의 이유가 되었다.

선행 표준들과 비교하여, GB 18030의 유니코드 매핑은 GBK 1.0에서 임시로 유니코드 Private Use Area 코드 포인트 (U+E000–F8FF)로 할당되었고 나중에 유니코드에 인코딩된 81개 문자에 대해 수정되었다. 이는 GB 18030의 부록 E에 명시되어 있다. GB 18030-2005에는 여전히 유니코드 PUA에 매핑되는 24개의 문자가 있다.

GB 18030-2022 업데이트에서는 PUA에 매핑되어야 하는 문자 요구 사항이 완전히 해제되었으며 모든 문자는 표준 유니코드 코드 포인트에 매핑되어야 한다. 이 중 18개의 매핑은 GBK와 GB 18030 사이에서 발생한 것과 유사하게 위치 교환을 통해 업데이트되었다. 나머지 6개는 두 바이트 PUA 매핑을 유지했으므로 비 PUA 선호도를 따르기 위해 4바이트 시퀀스 변경이 필요하다.

 국가 표준으로서 
GB 18030의 첫 번째 버전인 GB 18030-2000 정보 기술 - 정보 교환용 중국어 코드 문자 집합 - 기본 집합 확장은 1바이트 및 2바이트 인코딩과 함께 한중일 통합 한자 확장 A(유니코드 3.0에 있는 문자들과 일치)에 대한 4바이트 인코딩으로 구성된다. 잠정적인 개인 할당을 포함한 이 부분집합의 해당 유니코드 코드 포인트는 전적으로 BMP에 있다. 이 부분들은 GB 18030-2000에서 완전히 필수적이다. 대부분의 주요 컴퓨터 회사들은 이미 유니코드의 특정 버전을 바이너리 형식 및 OS 호출에 사용되는 기본 형식으로 표준화했다. 그러나 그들은 주로 유니코드 1.0에서 원래 정의된 BMP의 코드 포인트만 지원했으며, 이는 65,536개의 코드 포인트만 지원하고 종종 UCS-2로 16비트로 인코딩되었다. 이 표준은 기본적으로 GBK를 기반으로 하는 확장으로, 한중일 통합 한자 확장 A에 추가 문자가 포함되어 있다.

GB 18030-2005 정보 기술 - 중국어 코드 문자 집합으로 지정된 두 번째 버전은 GB 18030-2000의 1바이트, 2바이트 및 4바이트 인코딩과 동일한 필수 부분집합을 가지고 있다. 이 버전은 또한 BMP 외부에 있는 전체 한중일 통합 한자 확장 B를 4바이트 인코딩 섹션에 포함하며 권장 지원 요구사항이다. 그러나 4바이트 영역에 한중일 통합 한자 확장 B를 포함하는 것이 정보 처리 동안 유지되어야 하므로 소프트웨어는 더 이상 문자를 16비트 고정 너비 엔티티(UCS-2)로 취급할 수 없다. 따라서 그들은 데이터를 가변 너비 형식(UTF-8 또는 UTF-16과 같이 가장 일반적인 선택)으로 처리하거나 더 큰 고정 너비 형식(즉, UTF-32)으로 이동해야 한다. 마이크로소프트는 윈도우 2000에서 UCS-2에서 UTF-16으로 변경했다. 이 버전은 유니코드 3.1과 일치하며, 한글(한국어), 몽골어(만주 문자, 클리어 스크립트, 시베 허르겐, 갈리크 포함), 따이느아어, 티베트 문자, 위구르어/카자흐어/키르기스어 및 이 문자에 대한 지원도 제공했다.

세 번째이자 최신 버전인 GB 18030-2022 정보 기술 - 중국어 코드 문자 집합은 GB 18030-2005에서 권장 사항으로 지원되던 한중일 통합 한자 확장 B를 의무화하며, 강희자전 부수 및 한중일 통합 한자 URO, 확장 C, D, E, F를 포함한 유니코드 11.0까지의 업데이트를 포함한다. 아랍계 문자의 일부, 따이르, 신따이르, 따이땀, 리수어, 먀오와 같은 추가 언어도 GB 18030-2022에서 인식된다. GB 18030-2022는 또한 세 가지 구현 수준을 도입하며, "이 표준을 사용하는 모든 제품은 구현 수준 1을 구현해야 한다"는 요구사항에는 유니코드 3.1과 유니코드 11.0 사이에 추가된 4바이트 인코딩 영역의 66개의 새로운 BMP 문자가 포함된다. 구현 수준 2는 통용규범한자표의 지원을 요구하며, 구현 수준 3은 표준의 다른 모든 지정된 영역을 요구한다.

2022년 말부터 2023년까지 GB 18030-2022에 대한 추가 개정안 초안이 대중에게 공개될 예정이다. 현재 초안은 한자 모양 설명 문자, 한중일 통합 한자 URO, 확장 A, B, C, G, H, I에 대한 유니코드 15.1까지의 업데이트를 포함한다. 원래 2022년 말에 10번째 평면(아직 이름이 없는 유니코드 부가 평면)에 897개의 새로운 한자 문자를 배치하여 중국의 시민 실명 인증을 위해 사용될 예정이었으나, 결국 전문가 검토 후 622개 문자로 축소된 레퍼토리는 2023년 9월에 한중일 통합 한자 확장 I 블록으로 유니코드 15.1에 신속하게 포함되었다. 이에 따라 개정안 초안은 확장 I 코드 포인트를 사용하도록 수정되었다.

 매핑 
GB 18030은 1바이트(ASCII), 2바이트(확장 GBK), 또는 4바이트(UTF) 인코딩을 정의한다. 2바이트 코드는 조회표에 정의되어 있으며, 4바이트 코드는 UCS에서 인코딩되지 않은 부분을 채우기 위해 순차적으로(따라서 알고리즘적으로) 정의된다. GB 18030은 GBK의 단점을 물려받았는데, 가장 눈에 띄는 것은 GB18030 시퀀스에서 ASCII 문자를 안전하게 찾기 위해 특별한 코드가 필요하다는 점이다.

1바이트 및 2바이트 코드 포인트는 본질적으로 GBK에 유로 기호, 할당되지 않거나 사용자 정의된 포인트에 대한 PUA 매핑, 그리고 수직 구두점이 추가된 것이다. 4바이트 스킴은 각각 2바이트로 구성된 두 개의 단위로 생각할 수 있다. 각 단위는 GBK 2바이트 문자와 유사한 형식을 가지지만 두 번째 바이트의 값 범위가 0x30–0x39(십진수 숫자에 대한 ASCII 코드)이다. 첫 번째 바이트는 이전과 마찬가지로 0x81부터 0xFE까지의 범위를 가진다. 이는 GBK에 안전한 문자열 검색 루틴이 GB18030에도 합리적으로 안전해야 한다는 것을 의미한다(기본적인 바이트 지향 검색 루틴이 EUC에 합리적으로 안전한 것과 유사하게).

이는 총 1,587,600(126×10×126×10)개의 가능한 4바이트 시퀀스를 제공하며, 이는 유니코드의 1,112,064(17×65536 − 2048 대리쌍)개의 할당, 예약, 비문자 코드 포인트를 커버하기에 충분하다.

불행히도, 문제를 더욱 복잡하게 만드는 것은 4바이트 시퀀스와 해당 코드 포인트 간의 번역에 대한 간단한 규칙이 없다는 것이다. 대신, 코드는 다른 방식으로 매핑되지 않은 유니코드 코드 포인트에 만 순차적으로 할당된다(첫 번째 바이트가 가장 중요한 부분을, 마지막 바이트가 가장 덜 중요한 부분을 포함한다). 예를 들어:

 U+00DE (Þ) → 81 30 89 37
 U+00DF (ß) → 81 30 89 38
 U+00E0 (à) → A8 A4
 U+00E1 (á) → A8 A2
 U+00E2 (â) → 81 30 89 39
 U+00E3 (ã) → 81 30 8A 30

WHATWG 및 W3C 버전의 GB 18030에서는 코드 포인트를 효율적으로 변환하기 위해 오프셋 테이블이 사용된다. ICU와 glibc는 큰 순차 블록에서 공간 낭비를 피하기 위해 유사한 범위 정의를 사용한다.

 지원 

 인코딩 
GB18030은 윈도우 95 출시 이후 코드 페이지 54936으로 윈도우에서 지원되었다. 윈도우 2000 및 XP는 GB18030 지원 패키지를 제공한다. 오픈 소스 PostgreSQL 데이터베이스는 UTF-8에 대한 완전한 지원을 통해 즉, UTF-8로의 변환 및 변환을 통해 GB18030을 지원한다. 마찬가지로 마이크로소프트 SQL 서버는 UTF-16으로의 변환 및 변환을 통해 GB18030을 지원한다.

보다 구체적으로, 윈도우에서 GB18030 인코딩을 지원한다는 것은 코드 페이지 54936이 MultiByteToWideChar 및 WideCharToMultiByte에 의해 지원된다는 의미이다. 매핑의 하위 호환성으로 인해, 코드 페이지 54936이 지원되지 않더라도 많은 GB18030 파일은 레거시 코드 페이지 936, 즉 GBK로 실제로 성공적으로 열 수 있다. 그러나 이것은 해당 파일에 GBK 문자만 포함된 경우에만 해당된다. 파일에 GBK에 없는 문자가 포함된 경우 로딩이 실패하거나 손상된 결과가 발생한다(예시는 참조).

대부분의 리눅스 배포판에서 사용되는 문자 코덱 라이브러리인 GNU Glibc의 gconv는 2.2부터 GB 18030-2000을 지원하며, 2.14부터는 GB 18030-2005를 지원한다. 특히 glibc는 왕복 변환을 달성하기 위해 GB 18030-2005에 대한 비-PUA 매핑을 포함한다. 시그윈과 같은 비-glibc 유닉스 유사 환경에서 자주 사용되는 대체 Iconv 구현인 GNU libiconv는 버전 1.4부터 GB 18030을 지원한다.

2022년 현재 "비중국어 스크립트 지원은 계속 선택 사항이다" (아마도 디스플레이/글꼴 지원만 해당; 중국에서는 인코딩이 완전한 UTF이므로). 이 표준은 영어/ASCII를 지원하며 "GB 18030-2022에서 인식되는 다음 비중국어 스크립트는 아랍어, 티베트어, 몽골어, 따이르어, 신따이르어, 따이땀어, 이, 리수어, 한글(한국어), 먀오어이다."

 글꼴 
윈도우용 GB18030 지원 패키지에는 두 개의 중국어 글꼴인 SimSun-18030과 NSimSun-18030을 결합한 TrueType 글꼴 컬렉션 파일인 SimSun18030.ttc가 포함되어 있다. SimSun 18030 글꼴은 유니코드 2.1의 모든 문자와 유니코드 CJK 통합 한자 확장 A 블록에서 발견되는 새로운 문자를 포함하지만, 이름과는 달리 GB 18030으로 인코딩할 수 있는 모든 유니코드 코드 포인트(약 100만 개)에 대한 글리프를 포함하지 않는다. GB 18030 준수 인증은 필수(2바이트 및 CJK 확장 A) 중국어 부분의 글리프에 대한 정확한 처리 및 인식만을 요구한다. 그럼에도 불구하고, 표준에서 PUA 문자의 요구사항은 이 구현을 방해했다.

마이크로소프트에서 제공하는 Microsoft YaHei 및 DengXian은 2023년에 GB 18030-2022 구현 수준 2에 맞게 업데이트되었으며, SimSun은 구현 수준 3에 맞게 업데이트되었다.

본고딕(및 그 대응 글꼴인 Noto Sans CJK)은 2022년 11월 기준으로 GB 18030 업데이트가 발표되었을 때 이미 GB 18030-2022 구현 수준 2를 준수한다. 그러나 본명조(및 그 대응 글꼴인 Noto Serif CJK)는 당시에는 준수하지 않아, 글꼴이 구현 수준 2를 준수하도록 업데이트가 제공되었다. 마찬가지로 Microsoft YaHei 및 PingFang (Apple)은 GB 18030-2022 구현 수준 2를 준수하기 위해 구현 수준 1과 관련된 소수의 URO 추가가 필요하다.

HAN NOM 및 Hanazono Mincho와 같은 다른 CJK 글꼴군은 SimSun-18030 또는 SimSun (Founder Extended)보다 유니코드 CJK 확장 블록에 대한 더 넓은 범위를 제공하지만, GB 18030에 정의된 모든 코드 포인트를 지원하지는 않는다.

 같이 보기 
 궈뱌오 코드
 한자
 중국 문자 인코딩
 유니코드 인코딩 비교

 내용주 

 각주 

 외부 링크 
 IANA 문자 집합 GB18030 등록
 
 GB2312와 GBK로부터의 진화를 포함한 GB18030 소개 (Sun/인터넷 아카이브)
 ICU 데이터
 GB18030: 메가 코드 페이지 (IBM DeveloperWorks)
 GB18030-2000과 유니코드 간의 공인 매핑 테이블
 ICU 변환기 탐색기: GB18030
 유니코드 차트
 유니코드 한중일 통합 한자 확장 A (PDF, 1.5 MB)
 유니코드 한중일 통합 한자 확장 B (PDF, 13 MB)
 윈도우 2000/XP용 GB18030 지원 패키지, 마이크로소프트의 중국어, 티베트어, 이, 몽골어 및 태국어 글꼴 포함 (인터넷 아카이브)
 SIL의 프리웨어 글꼴, 편집기 및 문서

분류:유니코드 변환 형식
분류:중국어 문자 인코딩