Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32273
  • 博文数量: 11
  • 博客积分: 256
  • 博客等级: 二等列兵
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-15 17:02
文章存档

2011年(11)

最近访客

分类: IT职场

2011-05-04 21:17:26

字符集:符号的集合
字符编码:将字符集-》计算机存储 以及 计算机存储-》到符号集合进行转换的规则。

1.ASCIIAmerican Standard Code for Information Interchange美国信息交换标准代码字符集和编码
  字符集:一系列控制字符+可视字符(字母、阿拉伯数字和西文字符等),起源较早,适合于西欧语言的显示。
  编码:用7bit表示的128个字符,后来扩展为8bit可用表示256个字符
2.GB2312(国标2312)又称GBO
  字符集:常用汉字,ascii前面的127个字符,数学符号、罗马希腊的 字母、日文的假名等
     编码:但字节小于等于127的含义与ascii相同,两个连续的大于127的字节表示汉字,其中高位字节的范围 是:0xA1用到 0xF7,低位字节表示的范围是从0xA1到0xFE,这样就可用表示7000多个汉字。ASCII里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,而原来在127号以下的那些就叫"半角"字符了。
3.GBK
    由于GB2312不能处理人名、古汉语出现的罕用字所以出现了GBK和GB18030
     字符集:有微软开发,扩展了GB2312中的汉字集合,以及繁体字、汉语、日语的支持
      编码:
4.GB18030
    字符集:与完全兼容,与基本兼容,支持及的全部统一汉字,共收录汉字70244个
      编码:
  • 与相同,采用多编码,每个字可以由1个、2个或4个字节组成。
  • 编码空间庞大,最多可定义161万个字符。
  • 支持中国国内的文字,不需要动用造字区。
  • 汉字收录范围包含繁体汉字以及日韩汉字

5.Big5 大5码
     字符集:主要用于繁体汉字
     编码:用两个字节表示一个汉字。高字节范围为0x81-0xFE ,低字节范围为0x40-0x7E

6.Unicode
   字符集:人类所有字符
    编码:分为以下3类
    UTF-32:用4字节表示一个字符,优点是长度固定可高效定位,缺点是空间浪费和字节序问题
    UTF-16:尽量用2字节表示一个字符,优点是空间利用率较高,确定是字节序问题
    UTF-8:变长前缀码,与ASCII可兼容,普片使用。
        优点
  • UTF-8是ASCII的一个。因为一个纯ASCII字符串也是一个合法的UTF-8字符串,所以现存的ASCII文本不需要转换。为传统的扩展ASCII字符集设计的软件通常可以不经修改或很少修改就能与UTF-8一起使用。
  • 使用标准的面向字节的排序例程对UTF-8排序将产生与基于Unicode代码点排序相同的结果。(尽管这只有有限的有用性,因为在任何特定语言或文化下都不太可能有仍可接受的文字排列顺序。)
  • UTF-8和UTF-16都是文档的标准编码。所有其它编码都必须通过显式或文本声明来指定。
  • 任何的都可以用于UTF-8的数据(只要输入仅由完整的UTF-8字符组成)。但是,对于包含字符记数的正则表达式或其它结构必须小心。
  • UTF-8字符串可以由一个简单的算法可靠地识别出来。就是,一个字符串在任何其它编码中表现为合法的UTF-8的可能性很低,并随字符串长度增长而减小。举例说,字符值C0,C1,F5至FF从来没有出现。为了更好的可靠性,可以使用正则表达式来统计非法过长和替代值(可以查看上的验证UTF-8字符串的正则表达式)。

    缺点

    因为每个字符使用不同数量的字节编码,所以寻找串中第N个字符是一个O(N)复杂度的操作 — 即,串越长,则需要更多的时间来定位特定的字符。同时,还需要位变换来把字符编码成字节,把字节解码成字符。


    7.Accept-Charset/Accept-Encoding/Accept-Language/Content-Type/Content-Encoding/Content-Language

    在HTTP中,与字符集和字符编码相关的消息头是Accept-Charset/Content-Type,另外主区区分Accept-Charset/Accept-Encoding/Accept-Language/Content-Type/Content-Encoding/Content-Language:

    Accept-Charset:浏览器申明自己接收的字符集,这就是本文前面介绍的各种字符集和字符编码,如gb2312,utf-8(通常我们说Charset包括了相应的字符编码方案);

    Accept-Encoding:浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是只字符编码);

    Accept-Language:浏览器申明自己接收的语言。语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等;

    Content-Type:WEB服务器告诉浏览器自己响应的对象的类型和字符集。例如:Content-Type: text/html; charset='gb2312'

    Content-Encoding:WEB服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。例如:Content-Encoding:gzip

    Content-Language:WEB服务器告诉浏览器自己响应的对象的语言。




阅读(1278) | 评论(0) | 转发(0) |
0

上一篇:VIM积累

下一篇:设计模式概述

给主人留下些什么吧!~~