字符编码知识的整理

1、基础知识

概念

  1. 字符串:是由零个或多个字符组成的有限序列。
  2. 字符:包括各国家文字、标点符号、图形符号、数字等。
  3. 字符集:多个字符的集合。

计算机要准确的处理各类字符集文字,就须要进行字符编码,以便计算机可以识别和存储各类文字。网络

  1. 字符编码(字集码):是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、天然数序列、8位组或者电脉冲),以便文本在计算机中存储和经过通讯网络的传递。

举例

  • 常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。
  • 通常状况下一个字符集对应一种字符编码,可是Unicode比较特殊,存在多种字符编码标准,好比:UTF-8,UTF-16,UTF-32等。
  • 一张不彻底分类图:
    一张图
  • 更多

2、字符编码

常见的。编码

1. ASCII码

  • 美国制定的编码系统,主要用来表示现代英语和其余西欧语言。
  • 首先:1 byte = 8bit 因此 1个字节可表示256种符号
  • ASCII码占用了1个字节的后7位,最高位统一为0,可表示128个字符,包括大小写字母、数字、标点符号和美式英语中使用的特殊控制字符。
  • ASCII对照表
  • 好比:
二进制 十进制 十六进制 字符 解释
0011 0001 49 0x31 1 字符1
0100 0001 65 0x41 A 大写字母A
0110 0001 97 0x61 a 小写字母a
  • 问题 :不够用~

2. 扩充ASCII编码

  • 问题:同一个编码值,在不一样的编码体系里表明着不一样的字。
  • 好比中文,1个字节确定是不够的,必须使用多个字节表示一个符号。GB2312采用两个字节表明一个汉字,理论上能够表示256 * 256 = 65536个符号。

3. Unicode编码

  • 目的:统一全部文字编码。
  • 0x00000x10FFFF,共1114112个,分为17组,每组称为平面(plane),每平面拥有65536(2的16次方)个码位。
  • 一般会用“U+”而后紧接着一组十六进制的数字来表示这一个字符。
  • U+0000~U+FFFF基本多文种平面 ( BMP:Basic Multilingual Plane, 简称“零号平面”, plane 0)
    2个字节表示(例如U+4AE0,共支持六万多个字符)
  • 其他16个平面为辅助平面,以代理对(surrogate pair)的形式,用4个字节的值来储存。
  • 问题:编码效率不高,好比UCS-4(Unicode的标准之一)规定用4个字节存储一个符号,那么每一个英文字母前都必然有三个字节是0,这对存储和传输来讲都很耗资源。

UTF: Unicode Transfer Format,即把Unicode转作某种格式的意思.net

分类 位数 长度 编码规则 其余
UTF-8 8位序列编码,即以字节为单位 变长编码 按照不一样范围,能够有1-4字节的不一样长度 保留了ASCII字符的编码作为它的一部分,XML及其子集HTML采用UTF-8做为标准字集
UTF-16 16位序列编码 长度相对固定 0x10000之内的字符,使用2字节表示,超出部分使用4字节表示
UTF-32 32位序列编码 长度始终固定 使用4字节表示
相关文章
相关标签/搜索