不同编码方式下,一个英文字母占的字节是不同的:
1、ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
2、UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节
3、Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节
位(bit)、字节(byte)、字符(char)、编码
1、位:
数据存储的最小单位。每个二进制数字0或者1就是1个位;
2、字节:
8个位构成一个字节;即:1 byte (字节)= 8 bit(位);
1 KB = 1024 B(字节);
1 MB = 1024 KB; (2^10 B)
1 GB = 1024 MB; (2^20 B)
1 TB = 1024 GB; (2^30 B)
3、字符:
a、A、中、+、*、の......均表示一个字符;
一般 utf-8 编码下,一个汉字 字符 占用 3 个 字节;
一般 gbk 编码下,一个汉字 字符 占用 2 个 字节;
4、字符集:
即各种各个字符的集合,也就是说哪些汉字,
字母(A、b、c)和符号(空格、引号..)会被收入标准中;
5、编码:
规定每个“字符”分别用一个字节还是多个字节存储,
用哪些字节来存储,这个规定就叫做“编码”。
通俗的说:编码就是按照规则把字符翻译成对应的二进制数。
1)标准ASCII字符集:由96个打印字符、32个控制字符组成,一共128(2^7)个。
2)扩展ASCII字符集:将标准的ASCII最高位设为1,字符集一共有256(2^8)个。
3)GB2312字符集: 所有汉字字符在计算机内部采用2个字节来表示,每个字节的最高位规定为1。
4)GBK字符集:GB2312的扩充,兼容GB2312,除了收录GB2312所有的字符外,还收录了其他不常见的汉字、繁体字等。
5)Unicode字符集:容纳世界上所有语言字符和符号的集合;(以及对应的二进制数字)。Unicode只是一个编码规范,目前实现Unicode编码的只有三种:UTF-8、UCS-2和UTF-16,三种Unicode字符集之间可以按照规范进行转换。
6)UTF-8编码:UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容。
GB2312、GBK与UTF-8的区别
- GB2312和GBK主要用于汉字的编码,而UTF-8是全世界通用的。
- 处理汉字,使用 GB2312和GBK储存占内存要小。
- 如果英文字符较多,则建议使用UTF-8节省空间。
- 如果浏览器没有你使用的这种编码,你的网页内容就会变成无法识别的乱码。
- GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换。
- GB2312编码大约包含6000多汉字;GBK编码保留了所有GB2312编码,在此基础上进行编码范围的扩充,共22014个字符编码(包含特殊字符)。
参考资料:
1 https://blog.youkuaiyun.com/prdslf001001/article/details/78615823
2 https://blog.youkuaiyun.com/ZYY88886666/article/details/75285780