SCSU(Standard Compression Scheme for
Unicode)は、
Unicodeテキストのデータ量を削減するための技術標準です。この技術は、特にテキストが特定の言語や文字ブロックに偏っている場合に有効です。SCSUは、128から255の範囲の値を、特定の128文字ブロック内のオフセットに動的にマッピングすることで、効率的な符号化を実現します。
初期状態では、
ASCII文字とISO-8859-1の既存の文字列をSCSU文字列として処理します。この際、NULL、TAB、CR、LFなどの制御文字以外のC0制御文字は含まれません。多くのアルファベットは
Unicode符号点の隣接ブロックに存在するため、アルファベットの小文字や
ASCII句読点、またはアルファベットの大文字の枠内に収まる句読点を含むテキストは、1文字あたり1バイトで符号化できます。その他の句読点は、非ロックシフトを介して1文字あたり2バイトで符号化が可能です。
さらに、SCSUはアルファベット以外の言語を扱うために内部でUTF-16に切り替える機能も備えています。これにより、様々な言語のテキストを効率的に処理できます。
実用例
SCSUは、モバイルデバイス向けのオペレーティングシステムである
Symbian OSで、文字列のシリアル化に利用されています。また、
ロイターが最初に提案を公開し、内部でSCSUを使用しているとされています。SQL Server 2008 R2では、SCSUを使用してnchar(n)列やnvarchar(n)列に格納された
Unicode値を圧縮し、データの言語に応じて15%から50%の領域を節約しています。
他の圧縮方式との比較
SCSUは、テキストデータの圧縮に特化しているため、汎用的な圧縮方式と比較すると、必ずしも常に有利とは限りません。多くのアプリケーションでは、
Unicodeテキストを圧縮する必要がないため、SCSUのような専用の圧縮方式は広くサポートされていません。また、テキスト符号化としては使用できますが、内部処理が複雑になる場合があります。
SCSUは純粋に圧縮アルゴリズムとして見ると、数キロバイトを超えるテキストに対して、一般的に使用される汎用的なアルゴリズムよりも効率が劣ることがあります。しかし、SCSUには、数文字程度の短いテキストを効果的に圧縮できるという利点があります。一方、多くのフルスケール圧縮方式では、独自のオーバーヘッドを解消するために数百バイトのデータを必要とします。
Symbian OSでは、テキストの小さな文字列の切り取り、コピー、貼り付けといったクリップボード操作にもSCSUが利用されています。
まとめ
SCSUは、
Unicodeテキストの圧縮に特化した技術であり、特定の状況下で高い効果を発揮します。モバイル機器やデータベースなど、特定の環境下で利用されることが多いです。しかし、汎用的な圧縮方式と比較すると、効率やサポート面で課題があるため、利用シーンに応じて最適な圧縮方式を選択することが重要です。