计算机数据存储的最小单位,每个二进制数0、1就是1位
计算机中数据处理的基本单位,单位换算:
1B = 8bit
1KB = 1024B(2^10 B)
1MB = 1024KB(2^20 B)
1GB = 1024MB(2^30 B)
1TB = 1024GB(2^40 B)
指计算机中使用的字母、数字、字和符号
字符集:是一个系统支持的所有抽象字符的集合
字符编码:将符号转换为计算机可以接受的数字系统的数,成为数字代码
ASCII字符集&编码
美国信息交换标准代码,是基于拉丁字母的一套电脑编码系统,主要用于显示英语。包括控制字符(回车、退格、换行)和可显示字符(英文大小写、阿拉伯数字、西文符号)
ASCII编码使用7位(bit)表示一个字符,共128字符,ASCII扩展字符集使用8位(bit)表示一个字符,共256字符
缺陷明显,不支持更多的语言,苹果电脑已经抛弃了ASCII转用Unicode
GBXXXX字符集&编码
GB2312字符集编码编码规则:将ASCII编码扩展的字符取消掉,规定:一个小于127的字符意义与ASCII相同,但是两个大于127的字符连在一起表示一个汉字。前一个字节(高字节)从0XA1——0XF7
,后一个字节(低字节)从0XA1——0XFE
,可组合7000多简体汉字。原来ASCII里原有的字符都重新编了两个字节长的编码,这就是“全角”字符,原来在127号以下的叫“半角”字符。
GB2312、GB2312-80 是中国国家标准简体中文字符集,基本满足了汉字的计算机处理需要
但是泱泱中华文化7000个简体字符,一声呵呵送给你,这导致了后来GBK、GB18030的出现
GB18030是我国现时最新的内码字集,与GBK基本兼容,支持Unicode的全部汉字,共收录70244个汉字,特点如下:
与UTF-8相同,采用多字节编码,每个字可由1、2、4个字节组成
编码空间庞大,最多可定义161万个字符
支持中国国内少数民族的文字,不需要动用造字区
汉字收录范围包括繁体汉字以及日韩汉字
BIG5字符集&编码
又称大五码或五大码,是使用繁体中文(正体中文)社区中最常用的电脑汉字字符集标准,共收录13,060个汉字。
Unicode字符集&UTF编码
unicode编码系统为表达任意语言的任意字符而设计,使用4字节来表达每一字符。一一对应,没有二义性。
UCS & UNICODE
UTF-32
每个数字代表唯一的至少在某种语言中使用的符号的编码方案,称为UTF-32
UTF-32对每个字符都使用4字节,就空间而言,非常没有效率
优点:可以在常数时间内定位字符串中的第N个字符,因为第N个字符从第4*N个字节开始
UTF-16
尽管Unicode字符非常多,但是大多数不会用到超过65535的字符,因此就有了UTF-16(因为16位=2字节)
UTF-16将0 - 65535范围内的字符编码成2个字节
优点:空间效率上比UTF-32高两倍,因为每个字符只需要2个字节来存储(除了65535范围之外的)
编码方式
如果字符编码U小于0x10000,也就是十进制的0到65535之内,则直接使用两字节表示
如果字符编码U大于0x10000,由于UNICODE编码范围最大为0x10FFFF,从0x10000到0x10FFFF之间 共有0xFFFFF个编码,也就是需要20个bit就可以标示这些编码。用U‘表示从0-0xFFFFF之间的值,将其前 10 bit作为高位和16 bit的数值0xD800进行 逻辑or 操作,将后10 bit作为低位和0xDC00做 逻辑or 操作,这样组成的 4个byte就构成了U的编码。
UTF-8
一种针对Unicode的可变长度字符编码,可用来表示Unciode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容
UTF--8使用1-4个字节位每个字符编码
128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F)
带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要二个字节编码(Unicode范围由U+0080至U+07FF)
其他基本多文种平面(BMP)中的字符(这包含了大部分常用字)使用三个字节编码
其他极少使用的Unicode辅助平面的字符使用四字节编码
优点
UTF-8是ASCII的一个超集
使用标准的面向字节的排序例程对UTF-8排序将产生与基于Unicode代码点排序相同的结果
UTF-8和UTF-16都是可扩展标记语言文档的标准编码。所有其它编码都必须通过显式或文本声明来指定。
任何面向字节的字符串搜索算法都可以用于UTF-8的数据(只要输入仅由完整的UTF-8字符组成)。但是,对于包含字符记数的正则表达式或其它结构必须小心。
UTF-8字符串可以由一个简单的算法可靠地识别出来。就是,一个字符串在任何其它编码中表现为合法的UTF-8的可能性很低,并随字符串长度增长而减小
缺点
原文:https://www.cnblogs.com/yuanqiu/p/14671378.html