字符及编码.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于字符及编码 首先,我们要知道一些概念和标准。 字符和字节是两个容易混淆的概念,下面我们来看一下它们的含义。 ·????? 字符:人们用来表示某种意义的符号,如“1”、“a”、“字”等。 ·????? 字节:字节是存储空间的基本计量单位,由8个二进制位构成。 ·????? 字符串:零个或多个字符组成的有限序列。 ·????? 字符集:字符的集合,由于历史原因形成了多种标准,主要包括以下几种: ?? ASCII字符集 ?? ANSI字符集 ?? Unicode字符集 这些字符集包含什么又有什么关系呢? 这个问题的答案就是计算机字符集的发展历史。 ASCII(美国信息交换标准委员会American Standards Committee for Information Interchange)字符集,是计算机产生之初为英文通信设计的7位字符集。包含了基本的英文字母、数字、标点符号等128个字符。 随着计算机的广泛应用,为了可以在计算机中保存更多的信息,增加了新的字母、符号,还加入了很多画表格时需要用到的横线、竖线、交叉等形状。这些新增的字符从用128到255之间的数字进行表示,它们构成的字符集通常被称为“扩展字符集”。 计算机进入中国后为了表示汉字(仅常用汉字就有6000多个),我们规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(称为高字节)从0xA1用到0xF7,后面一个字节(称为低字节)从0xA1到0xFE,这样就可以组合出7445个简体汉字。在这些编码里,还把数学符号、罗马希腊的字母、日文的假名都编进去了,连在ASCII里本来就有的数字、标点、字母都统统重新编成了两个字节长的编码,这就是常说的“全角”字符,而原来在127号以下的那些就叫“半角”字符了。这种汉字方案叫做“GB2312”,是对ASCII的中文扩展。 由于汉字太多,我们不得不再一次增加字符的使用范围,只要第一个字节大于127就固定表示这是一个汉字的开始,不管后面跟的是不是扩展字符集里的内容。扩展之后的编码方案被称为GBK标准,GBK包括了GB2312的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。后来我们再扩展,又加了几千个新的少数民族的字,GBK扩成了GB18030。 程序员们将其通称为“DBCS”(双字节字符集Double Byte Charecter Set),最大的特点是两字节长的汉字字符和一字节长的英文字符并存,因此中文处理时必须要注意字串里每一个字节的值,如果这个值是大于127的,就可以将下两个字节作为一个双字节编码,而不用管低字节的高位是什么。 与此同时各个国家和地区所制定的不同ANSI编码标准中,都只规定了各自语言所需的“字符”。这些ANSI编码标准所规定的内容包含两层含义: ?标准中包含哪些文字和符号,而这些“字符”的集合称为“字符集”。 ?规定每个“字符”分别用几个字节存储。用什么值来表示这些字符,这个规定就叫做“编码”。 因为当时各个国家都搞出一套自己的编码标准,结果互相之间谁也不懂谁的编码,谁也不支持别人的编码,连中国大陆和中国台湾使用着同一种语言的地区,也分别采用了不同的DBCS编码方案——GB2313(中国大陆)和BIG5(中国台湾)编码,装错了字符系统,显示就会乱了套。 这时,ISO的国际组织决定着手解决这个问题。他们重新搞了一个包括地球上所有文字和符号的编码——“Universal Multiple-Octet Coded Character Set”,简称UCS,就是我们现在常说的“Unicode”。 Unicode在制定时没有考虑与任何一种现有的编码方案保持兼容,这使得GBK与Unicode在汉字的内码编排上是完全不一样的,没有一种简单的算法可以使文本内容在Unicode编码和ANSI编码间进行转换,这种转换必须通过查表来进行。 Unicode开始制定时,计算机的存储器容量极大地发展了,空间再也不成为问题了。于是ISO就直接规定必须用两个字节,也就是16位来统一表示所有的字符,对于ASCII里的那些字符,Unicode保持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他语言的文字和符号则全部重新统一编码。由于英文符号只需要用到低8位,所以其高8位永远是0,因此这种方案在保存英文文本时会浪费一倍的空间。 从Unicode开始,无论是半角的英文字母,还是全角的汉字,都是统一的“一个字符”。同时,也都是统一的“两个字节”(这里要注意“字符”和“字节”两个概念的不同,“字节”是物理存储的基本计量单位,而“字符”则是一个文化相关的符号)。在Unicode中,一个字符就是两个字节。 多种字符集存在时,那些生产多语言软件的公司为了在不同的国家销售同一

文档评论(0)

82393aa + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档