数据流编码的预测方法及预测装置的制造方法_2

文档序号:9708422阅读:来源:国知局
[0042] IS0-8859字符集系列上世纪80年代中期由欧洲制造商协会(ECMA)设计并被ISO所 接受,是一整套关于字母语言的8位图形字符集,现已有至少15种字符集存在该系列中。下 面列举了其中10种,并指出了其对应的地区或语言(如表1):
[0043]
1234567891011 表1字符集语言对应表 2 注意: 3
[0046] 1. 一个字符集可能用于多个地区,如IS0-8859-1,可以用于西欧,也可用于澳洲, 北美等地区。 4 2.-种语言不一定只能被一种编码表示,如拉丁 1到拉丁 6都能表示德语。 5
[0048] 每个字符集有256个字符,其中0-127部分与扩展ASCII码对应部分相同,128-159 是一些很少被使用的控制字符,在ISO 6429中被称为C1集。区别在于160-255部分。 6 3)IS0_2022 系列 7
[0050]对于像中文、日文、韩文这样的文字,无法只用8位来表示所有的字符。ISO 2022提 8 供了这样一种技术,它能在一种数据流编码中支持多种字符集,可以用8位或16位来表示一 9 个文字(字符),是一种变长的编码,这样,就能表示所有的上述东亚字符了。该编码还有个 10 显著的特点,就是所有的字节都是以〇开始(ASCII的0-127部分),有效位数是7,所以在网络 11 传输中,可以只传7位。但同时出现了一个问题,如何区分哪些是ACSII部分的字符,哪些是 东亚字符?ISO 2022用到的是标号(designations)和变换函数(shift functions)。
[0051 ] 标号又称ESC序列(escape sequence),是一串以ASCII的ESC(oxlB)开头的字符 串,特定的字符串指明所用的字符集。
[0052] 变换函数指明以何种方式解释接下来的字符,包括以何种字符集解释,解释多长 的字节(接下来的两个字节或所有新的变换出现前的字节)。
[0053] 下面是IS0-2022-CN(中文),IS0-2022-JP(日文),以及IS0-2022-KR(韩文)的实现 方式。
[0054] 3.1)IS0-2022-CN
[0055] IS0-2022-CN有3种标号:S0标号,SS2标号和SS3标号(SS3只出现于IS0-2022-CN-EXT中hSO标号的形式是ESC$)〈F>,其中<F>表示终结字符,由ISO指定。SS2标号的形式是 ESC$*〈F>,SS3标号的形式是ESC$+〈F>。新出现的同种标号会覆盖前面的标号,如S0标号ESC $) A可以覆盖之前出现的S0标号ESC$) G,接下来的出现在S0变换后的字符将由新的S0标号 指定的字符集来解码。
[0056] IS0-2022-CN有4种变换:SI,SO,SS2,SS3(SS3变换只出现于IS0-2022-CN-EXT中)。
[0057] SI变换由一个字节oxOF指定,表明后面的字节都应该解释为ASCII,直到遇到另一 个变换。文本以SI为默认的变换,没有出现其它SI变换时,所有字节都将被解释为ASCII,即 文本以ACSII字符开头。对于文本的每一行,若有汉字字符存在,一定要指定一个S0标号,BP 上一行指定的标号在本行不起作用。在行结束之前,一定要变换到ASCII(SI),当然若本行 不含汉字字符,就不需要这样的变换了,整个一行都是ASCII字符(关于IS0-2022-CN的形式 语法,详见RFC 1922 7.1 节)[5]。
[0058] S0变换由一个字节οχΟΕ指定,表明接下来的字节由S0标号指定的字符集来解释。
[0059] SS2变换由两个字节oxlB4E指定,表明接下来两个字节由SS2标号指定的字符集来 解释,之后的字节又将由之前定义的变换来解释(SI或S0)。
[0060] SS3变换由两个字节OX1B4F指定,表明接下来两个字节由SS3标号指定的字符集来 解释,之后的字节又将由之前定义的变换来解释(SI或so)。
[0061] 该编码支持的字符集有厶5(:11,682312,0吧 11643113116-1和0吧 1164311&116-2〇
[0062] IS0-2022-CN所用的标号,变换函数,以及支持的字符集如表2所示,标号含义如表 3所示。
[0063]
[0064] 表2 IS0-2022-CN字符集变换函数对应表 1
[0066] 表3标号含义
[0067] IS0-2022-CN-EXT 是对 IS0-2022-CN 的一个扩展,支持汉字字符集:GB,Big5 和 CNS 11643
[0068] 3.2)IS0-2022-JP
[0069] IS0-2022-JP与IS0-2022-CN类似,但更简单些,因为它没有用到变换函数,只用到 了标号,如表4:
[0070]
[0071] 表4 IS0-2022-JP标号字符集对应表
[0072] JIS X 0201与ASCII基本相同,除了两个字符:反斜线符号(backslash)和tilde (~)ebackslash被日元符号代替,tilde被overline代替。
[0073] JIS X 0208字符集包括日本汉字,平假名,片假名和其它一些符号和字符。
[0074]若一行中含有JIS X 0208字符集,则在该行结束前,需要转换到ASCII或JIS X 0201字符集,这个转换指明了下一行开始所用的字符集。文本必须以ASCII结束,关于IS0-2022-JP的形式语法。
[0075] 3.3)IS0-2022-KR
[0076] IS0-2022-KR也有标号和变换函数,如表5所示:
[0077]
[0078] 表5 IS0-2022-KR变换函数字符集对应关系及标号意义表
[0079] KSC 5601字符集包括Hangul,Hanja,图形和一些其它外来字符,每个字符由两个 字节组成。
[0080] ESC$)C标号的出现表明将要出现KSC 5601字符集中的字符,至多出现一次。若未 出现,表明所有的字符都是ASCII。
[0081] 4)Unicode
[0082] 4.1)UTF-16
[0083] Unicode的代码空间是从U+0000到U+10FFFF,共分为17个面板,第0个面板是从U+ 0000到U+FFFF,称为基本多语言面板(BMP brief for Basic Multilingual Plane),包含 了大多数常用的字符。其它16个面板称为辅助面板(Supplementary Planes),其中许多还 未被分配到。
[0084] 代码空间中有些代码点(codepoints)是永久不分配的,有些是保留作非字符用 的。如每个面板的最后两个代码点U+nFFFE和U+nFFFF不能被编码成字符,软件设计者可以 在内部处理中使用它们。还有许多保留的私有用途代码点,详见参考文献[11]。
[0085] 有2048个特殊的保留代码点:U+D800到U+DFFF,这些点在UTF-16中被用作特殊用 途--代理代码单元(surrogate code units或surrogates)。这2048个保留代码点被均分 为两组,每组1024个代码点。0xD800-0xDBFF被称为高位代理(high surrogates),0xDC00-OxDFFF被称为低位代理(low surrogates)。一个高位代理加上跟在后面的一个低位代理组 成一个代理对,一共有1,024 X 1,024 = 1,048,576种可能,正好包括了所有在辅助面板中的 代码点,这样就能表示超过100万个字符了。
[0086] 因为是用两个字节来表示一个字符或代理,所以涉及到字节序的问题。大端是以 最重要的字节开始,次重要的字节结束,小端则相反。编码形式和字节序对应一个数据流编 码模式(character encoding scheme)。
[0087] UTF-16有3种数据流编码模式,UTF-16BE(大端),UTF-16LE(小端),UTF-16(未指定 端)。指定端的就非常容易处理了,对于未指定端的,一种方法是同时试两种字节序,若解析 出的字符从一种语言跳向了另一种语言,就说明很大可能不是以该字节序编码的。
[0088] 为了解决这个问题,代码点U+FEFF被指定为字节序标记(BOM brief for byte order mark)。字节序标记被放在文件或数据流的开始,两个相邻的字节oxFE和oxFF只有在 一种字节序中能表示字符,因为U+FFFE是被保留的。oxFE+oxFF表明是大端,oxFF+oxFE表明 是小端。字符U+FEFF还有另一个意思一ZERO WIDTH NO-BREAK SPACE,在未指定字节序的 UTF-16编码文件开始的U+FEFF只会被解释为字节序标记。
[0089] 字节序标记还有另一个用处:暗示数据流编码。在绝大多数现存编码中,文件以 OxFE OxFF或OxFF OxFE开头是不太可能的,这个文件以UTF-16形式编码的可能性非常大。
[0090] 4.2)UTF-8
[0091] UTF-8的设计是为了兼容现存的软件,这些软件被设计为处理8位的文本数据。所 以有必要使Unicode字符集中ASCII 0x00至0x7F的部分仍像原来一样,用8位表示。
[0092] UTF-8用一个到四个的字节序列来表示整个Unicode代码空间(理论上最多可有六 个字节长)。
[0093] 表6展示了UTF-8编码的方式以及对应Unicode代码点的
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1