浅析字符集和字符编码
字符集
即编码字符集(coded character set),可以理解为一个包含了该字符集里每一个元素的key-value表,key是字符,value是该字符对应的二进制序号,学名是代码(又称代码点)。
-
ASCII:英文字母、数字
-
ISO 8859:向下兼容ASCII(其前128位即ASCII字符集,编号保持不变),针对不同语言有不同版本
不同ISO版本具体参考这篇☞链接
-
GB:汉字的字符集,主要有GB2312, GBK,GB1300, GB10830等
-
Unicode:向下兼容 ISO-8859-1,涵盖世界上所有字符,可跨平台
字符编码
使用字符需要把字符的序号存储进内存,而字符编码就是如何将文字编号存储到内存中的规则,即字符集中字符到计算机内实际存储值的映射。
像ASCII码,直接把自己的序号存进内存,因为ASCII只含128个字符,7bits即满足需求(为方便操作用8bits)。
但其他字符集中字符量就大得多,如Unicode,有上百万字符量,为了标识靠后的字符,需要三个字节(223=8,388,608),因此,如何存储将字符集存储进内存,使得效率更高,占用内存更小,成了字符编码需要考虑的问题。
字符编码举例
- ASCII:ASCII直接将字符在编码字符集中的序号作为字符在计算机中存储从数值。
- UTF-16:变长的编码方式以16位长位一码元,以1个或者2个码元来表示。
- UTF-8:变长的编码方式,1~4个字节表示一个符号。
- UTF-32:定产的编码方式,32位,4字节。
具体编码实现思想可以看这篇☞[链接
参考:https://blog.csdn.net/guxiaonuan/article/details/78678043?spm=1001.2014.3001.5506
https://blog.csdn.net/nlznlz/article/details/80950596?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control