統一碼標準壓縮方案統一碼標準壓縮方案[1](英語:Standard Compression Scheme for Unicode,縮寫:SCSU)[2],是一種統一碼技術標準。用於減少統一碼文本所需使用的字節數,尤其是該文本中所使用的字符,主要集中在一種或幾種語言區段。它的作法主要是將 128– 255 范围内的值,动态映射到 以 128 個字符為單位的特定區段的偏移量来实现。编码器的初始条件則是ASCII和ISO-8859-1中不包含除 NULL TAB CR 和 LF 之外的 C0 控制代码的现有字符串可以被视为 SCSU 字符串。
历史和使用最初,是由路透社开发了 SCSU,並以此命名為「統一碼的路透社壓縮方案」(英語:Reuters Compression Scheme for Unicode,RSCU)。 [4] [5] [6] [7] 起初統一碼聯盟认为它是一种字符编码, [8]在 1999 年則改变了看法:虽然它仍然被认为是一种传输用途编码语法,但有一段时间它不再被认为是一种字符编码,這是因为對同一份文件,不同的压缩器可能会产生不同的输出。 [9]然而,在 2004 年,该决定被撤销,现在 SCSU 被认为是一种压缩字符编码方案,而不是简单或复合字符编码方案。 [10] Roman Czyborra(GNU Unifont)编写了一个解压器。 [11] IBM 相关的解压缩器可以在國際統一碼部件中找到,还有一个用 Java 编写的压缩器。 [12]更简单的参考编解码器可作为 TR6 的附件提供。 Symbian OS是一种用于手机和其他移动设备的操作系统,它使用此壓縮方案來將字符串序列化。 SQL Server 2008 R2使用 SCSU,其壓縮針對的對象則是存储在nchar(n)和nvarchar(n)列中的統一碼值(即以UCS-2编码的字符串),其節省的空間達到了 15% 到 50% (而UTF-8只能對統一碼中的ASCII子集减少 50%),具体取决于資料的语言。 [13] 方案以下部分简要描述了压缩 SCSU 流的解剖结构。有关完整说明(与解压缩器的说明相匹配),请参阅 UTS #6 文档。 编码方式SCSU 以单字节模式启动,该模式使用压缩的窗口编码。使用一些指令用來轉換到UTF-16BE“統一碼”模式以及从该模式切换到单字节模式的命令。 窗口编码SCSU 的核心在于使用一些窗口來定义了字节 0x80-0xff 的意義。有八个靜態窗口用于简单文字和标点符号,以及六個動態窗口(加上“半 Unicode 區段”窗口和用于补充平面的自定义窗口)用于使用更多字符。 简单和动态窗口都是通过特殊命令字符选择的。对于不适合当前块的单个字符,提供用于引用的命令字符。 與通用純文本壓縮方案的比较由于 UTF-16 或 UTF-8 文本可能比在 Unicode 之前的编码中占用的空间更多,因此人们可能希望使用压缩(例如 SCSU)来缓解这一问题。 [14]与通用压缩机相比,使用 SCSU 不一定有优势。 [7]此外,虽然它可以用作文本编码,但由于算法的状态性质,将其用作内部文本表示时可能会出现困难,因为基本文本操作变得非常重要。 纯粹作为一种压缩算法处理,在處理超過幾 K 的文本,SCSU 不如最常用的通用算法来处理。 在某些情況下,標準壓縮方案確實是有優勢的。對於那些較短(使用的字符量不多)的文本,它可以有效壓縮文本,而大多数的全尺寸壓縮器,它們本身的開銷通常需要額外耗費数百位元組。在Symbian OS中,甚至將此標準壓縮方案用于剪贴板操作,例如剪切、复制和粘贴小字符串文本。 在 HTML 中W3C [15] [16]和WHATWG [17] HTML 標準中,禁止在文档中支持統一碼標準壓縮方案,這是因为 HTML 的设计没有考虑到非 ASCII 兼容的编码。此外,已證明可以藉由浏览器对此类编码处理不当而导致的跨網站腳本漏洞。 [18] 另見
参考資料
|