编码
- 计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果;
- 编码:按照何种规则将字符存储在计算机中;解码:将存储在计算机中的二进制数解析显示出来;如果使用了错误的解码就会出现乱码。
- 字符:各种文字和符号的总称,包括各国文字、标点符号、图形符号、数字等。
- 字符集(Charset):是一个系统支持的所有抽象字符的集合
- 字符编码:将符号(一般是文字)转换为计算机可以接受的数字系统的数字
- 位:存储数据的最小单位,内存里面有很多小格子,每个格子中只能存放一个 0 或 1
- 字节:存储数据的基本单位
- 1字节(Byte)等于 8 位(bit),不同编码方式-【汉字、英文、数字】所占字节不同
- 常见的中文编码方式有GB2312、BIG5、GBK
1-原码、反码、补码--使用补码来做减法(符号位参与运算,减法变为加法)
- 机器数:一个数在计算机中的二进制表示形式,最高位为符号位(正数为0, 负数为1)
- 真值:去掉机器数符号位的数值
- 原码:第一位表示符号, 其余位表示值
- 反码:负数--符号位不变,其余各位取反
- 补码:负数--符号位不变,其余各位取反, 最后+1
- 补码的取值范围是[-128, 127]
1.1 ASCII
- 它主要用于显示现代英语,使用7位(bits)表示一个字符,共128字符,最高位没有使用(0);
- 最通用的单字节编码系统,有被Unicode追上的迹象
- 再利用最高位进行编码的方式就称为非ASCII编码,如ISO-8859-1编码
- ASCII的最大缺点是只能显示26个基本拉丁字母、阿拉伯数目字和英式标点符号,因此只能用于显示现代美国英语
1.2 GB2312
- 一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字
- 基本满足了汉字的计算机处理需要
- 对于人民、古汉语等方面出现的罕见字,GB2312不能处理,这导致了后来GBK及GBK18030汉字字符集的出现
1.3 Unicode
- 不同的编码在本地使用没有问题,一旦出现在网络中,由于不兼容,互相访问就会出现乱码
- Unicode编码系统为表达任意语言的任意字符而设计
- Unicode是字符集,UTF-32/ UTF-16/ UTF-8是三种字符编码方案
- Unicode编码高字节总是00,包含大量英文的文本会浪费空间,所以,出现了UTF-8编码(变长编码)--1~4字节表示中英文
- UTF-8是一种变长编码方式,使用1-4个字节进行编码;其中第一个字节与ASCII兼容;是互联网上使用最广的一种Unicode的编码规则
1.4 BIG5
- 主要用于繁体中文(台湾,香港,澳门等)
**********************************************************************************