字符的编码以及交互中的识别和处理.docVIP

字符的编码以及交互中的识别和处理.doc

  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文档。上传文档
查看更多
字符的编码以及交互中的识别和处理

字符的编码以及交互中的识别与处理 (一)为何关注起这个问题 事情的起因是我在想该如何描述HTTP协议中关于编码的问题。 如果说HTTP协议是个文本协议,那怎么理解文本这两个字,或者更具体一点说,当使用HTTP协议交互的时候,应该从Socket上读字节(Byte),还是读字符串(char,或者String)?如果读字节最后肯定也要转换成字符串,如果读字符串,该认为字符串是怎么编码的?ASCII码肯定可以表示英文,那中文怎么理解?双方怎么约定字符集和语言呢?其实我现在也说不好具体的问题到底如何表达,自己的理解还是不够,总之这个事情就是从这里开始的。 我花了三天时间,看了不少东西,觉得这个问题我搞清楚了,整理如下。 (二)字符集与编码以及为什么这么多 首先说,字符集与编码是两个互相联系的概念。字符集就是可以表达的字符的集合,编码就是对字符集中的每个字符赋予一个唯一的数字。因为在计算机里面所有的字符都只能使用一个数字编码来表示。有了这个编码,软件才知道该如何显示字符,才能和人交流。 历史上,计算机是美国兴起的,所以一开始,计算机要显示的字符除了26个字母(包括大小写)、数字以及一些标点符号外,就没有什么了,所以字符集很小,字符集的编码也比较容易,因为计算机中最基本的单元是一个字节,一个字节就足以表示了。计算机开始在其他国家使用的时候,这个问题就变得严重起来,因为别的国家的字符集跟美国不同。但是如果这些国家的字符集比较小,那么就可以使用美国在编码中还没有定义的那些位置。但是对中国这种大字符集的国家来讲,显然是不现实的,因为汉字太多,不可能使用一个字节来编码,至少应该使用两个。如果使用两个就会带来问题,即如何判断一个字节是一个汉字的一部分,还是一个单独的编码?另外,其他国家也会使用两个字节来编码,他们之间如果没有沟通,就会互相冲突,造成一个数字代表不同国家的不同字符,如果他们交互起来就会造成混乱。不幸的是,历史确实是这样的。 (三)字符集与编码 (1)ASCII,American Standard Code for Information Interchange,美国信息互换标准代码,(American Standard Code for Information Interchange,美国信息互换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的型态发表是在1967年,最后一次更新则是在1986年,至今为止共定义了128个字符;其中33个字符无法显示(在DOS模式下可显示出一些诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符。控制字符的用途主要是用来操控已经处理过的文字。在33个字符之外的是95个可显示的字符,包含用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)。ASCII用数值0~7F(即一个字节的低7位)表示常见的英文字符和一些常见的符号,10进制的范围就是0-127了,比如我们常见的大写字母A,ASCII值就是65(10进制)。而我们说的一个字节是8个二进制位(如:1111 1111,此数的10进制是255,16进制是FF),而7F的二进制形式为(0111 1111)所以说的7位就指有效的7位。因此ASCII的字节中,最高位一定是0。 ASCII的最大缺点是只能显示26个基本拉丁字母,因此只能用于显示现代美国英语(而且在处理英语当中的外来词如nave、café、élite等等时,所有重音符号都不得不去掉,即使这样做会违反拼写规则)。 (2)EASCII(Extended ASCII,延伸美国标准信息交换码)是将ASCII码由7位扩充为8位而成。EASCII的内码是由0到255共有256个字符组成。EASCII码比ASCII码扩充出来的符号包括表格符号、计算符号、希腊字母和特殊的拉丁符号。比如符号,的编码时163,的编码是165,的编码是169等等。 (3)ISO/IEC 8859,收录了空格及94个可印刷字符,足以给英语使用。但是,其他使用拉丁字母的语言(主要是欧洲国家的语言),都有一定数量的附加符号字母,故可以使用ASCII及控制字符以外的区域来储存及表示。EASCII只是其中一种,显然它也不能完全满足所有使用拉丁字母的语言(因为所有使用拉丁字母语言的国家的所有不同的拉丁字母超过了256个,使用一个字节不能穷尽)。另外一个思路就是使用一个字节的全部位,但是针对每一种语言,制定一个字符集以及编码。这就出现了如下一种情形:同一个数字编码,在不同的字符集下,代表不同的字母,即使是单字节的编码也是一样。 ISO/IEC 8859全称ISO/IEC 8859,是国际标准化组织(

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档