유니코드 표준 압축 방식

유니코드 표준 압축 방식(Standard Compression Scheme for Unicode, SCSU)은 유니코드 텍스트를 표현하는 데 필요한 바이트 수를 줄이기 위한 유니코드 기술 표준이다. 특히 해당 텍스트가 주로 하나 또는 소수의 언어별 문자 블록의 문자를 사용하는 경우에 유용하다. 이 방식은 128~255 범위의 값을 특정 128개 문자 블록 내의 오프셋에 동적으로 매핑하는 방식으로 작동한다. 인코더의 초기 조건은 널, 탭, CR, LF 외의 C0 제어 코드를 포함하지 않는 ASCII 및 ISO-8859-1의 기존 문자열을 SCSU 문자열로 처리할 수 있음을 의미한다. 대부분의 알파벳이 연속적인 유니코드 코드 포인트 블록에 존재하므로, 소규모 알파벳과 ASCII 문장 부호 또는 주 알파벳의 창에 맞는 문장 부호를 사용하는 텍스트는 문자당 1바이트(설정 오버헤드 포함, 일반적인 언어의 경우 종종 1바이트에 불과함)로 인코딩될 수 있으며, 대부분의 다른 문장 부호는 비잠금 시프트를 통해 기호당 2바이트로 인코딩될 수 있다. SCSU는 또한 비알파벳 언어를 처리하기 위해 내부적으로 UTF-16으로 전환할 수 있다.

 역사 및 사용 
로이터는 원래 SCSU를 개발했으며, 당시에는 Reuters Compression Scheme for Unicode의 약어인 RCSU라는 이름으로 사용했다.

처음에는 유니코드 컨소시엄이 이를 문자 인코딩으로 간주했지만, 1999년에는 생각을 바꾸었다. 여전히 전송 인코딩 구문으로 간주되었지만, 잠시 동안은 다른 압축기가 동일한 텍스트에 대해 다른 출력을 생성할 수 있다는 이유로 더 이상 문자 인코딩으로 간주되지 않았다.https://unicode.org/reports/tr17/tr17-3.html#Transfer Encoding Syntax 그러나 2004년에 이 결정은 번복되었고, 현재 SCSU는 단순 또는 복합 문자 인코딩 방식과 달리 압축 문자 인코딩 방식으로 간주된다.

로만 치보라(GNU 유니폰트의 저자)는 압축 해제기를 작성했다. IBM이 기여한 압축 해제기는 International Components for Unicode에서 자바로 작성된 압축기와 함께 찾을 수 있다. 더 간단한 참조 코덱은 TR6의 첨부 파일로 제공된다.

휴대폰 및 기타 모바일 장치를 위한 운영 체제인 심비안 OS는 SCSU를 사용하여 문자열을 직렬화한다.

SQL Server 2008 R2는 SCSU를 사용하여 nchar(n) 및 nvarchar(n) 열에 저장된 유니코드 값(여기서 UCS-2 인코딩의 문자열을 의미)을 압축하며, 데이터의 언어에 따라 15%에서 50% 사이의 공간 절약을 달성한다(UTF-8은 유니코드의 ASCII 부분 집합에 대해서만 50% 절감 효과를 제공한다).

 방식 
다음 섹션에서는 압축된 SCSU 스트림의 구성을 간략하게 설명한다. 전체 설명(압축 해제기와 일치)은 UTS #6 문서를 참조한다.

 인코딩 모드 
SCSU는 단일 바이트 모드에서 시작하며, 이 모드에서는 압축된 윈도우 인코딩을 사용한다. UTF-16BE "유니코드" 모드로 전환하고, 해당 모드에서 다시 단일 바이트 모드로 전환하는 명령이 존재한다.

 윈도우 인코딩 
SCSU의 핵심은 0x80-0xff 바이트의 의미가 정의되는 윈도우에 있다. 간단한 스크립트와 문장 부호를 위한 8개의 정적 윈도우와 더 많은 문자를 사용하는 스크립트를 위한 6가지 유형의 동적 윈도우(및 "하프 유니코드 블록" 윈도우와 보조 평면을 위한 사용자 정의 윈도우)가 있다.

간단한 윈도우와 동적 윈도우는 모두 특수 명령 문자를 통해 선택된다. 현재 블록에 맞지 않는 개별 문자의 경우, 인용을 위한 명령 문자가 제공된다.

 범용 일반 텍스트 압축 방식과의 비교 
UTF-16 또는 UTF-8 텍스트가 이전 유니코드 인코딩의 텍스트보다 더 많은 공간을 차지할 수 있기 때문에, 이 문제를 완화하기 위해 SCSU와 같은 압축을 사용할 수 있다. 범용 압축기와 비교할 때 SCSU를 사용하는 것이 반드시 유리한 것은 아니다. 또한, 텍스트 인코딩으로 사용될 수 있지만, 알고리즘의 상태 유지 특성 때문에 기본적인 텍스트 작업이 비자명해지므로 내부 텍스트 표현으로 사용할 때 어려움이 발생할 수 있다.

순수하게 압축 알고리즘으로 취급할 때, SCSU는 몇 킬로바이트 이상의 텍스트에 대해 대부분의 일반적으로 사용되는 범용 알고리즘보다 성능이 떨어진다.

SCSU는 길이가 몇 문자에 불과한 텍스트도 유용하게 압축할 수 있다는 장점이 있다. 반면 대부분의 대규모 압축기는 자체 오버헤드를 상쇄하기 위해 수백 바이트의 데이터가 필요하다. 심비안 OS에서는 작은 텍스트 문자열의 잘라내기, 복사 및 붙여넣기와 같은 클립보드 작업에도 SCSU가 사용된다.

 HTML에서 
W3C 및 WHATWG HTML 표준은 HTML 문서에서 SCSU 지원을 금지한다. 이는 HTML이 비 ASCII 호환 인코딩을 염두에 두고 설계되지 않았기 때문이다. 과거에는 브라우저의 이러한 인코딩 처리 미숙으로 인해 사이트 간 스크립팅 취약점이 시연된 바 있다.

 각주 

분류:유니코드 변환 형식