记录一下关于ASCII码到Unicode再到UTF-8的发展历史和各自的特点。
ascii码
ascii码是最原始的字符格式,其底层原理是通过一个字节来表示内存空间,而一个字节则有八位数,二进制的结果即是可以存储256个信息。那么当初的混沌时代,英语只有26个字母就算加上一些符号那么256个信息也是完全能够存储甚至还有多余的内存,因此在一开始的时候别的语种的程序员们就利用剩下的内存来记录本国的语言,但是好景不长全世界那么多语言,256个信息好像也有点不够看了,特别是中文那么多汉字,所以当一个字节用完之后,后来者就想到了通过两个字节来表示一个汉字,这样能记录下来的信息就相对而言很多了。
Unicode
那么ASCII码如果一直按着上面的发展似乎好像也不错,但是仔细一想计算机只能识别一个字符,他不关心你是汉字还是字母还是其他的,但是字母和一些其他比较早的语言只需要一个字节,而坑位满了之后后面的语言又是两个字节,计算机识别起来会不会太麻烦了呢。所以之后就有人将所有的文字都设置为两个字节来表示一个字符的通用格式,不管你字母还是啥,统统给老子用两个字节没得商量!于是就这样同意了字符的内存字节大小,这样计算机解析和读取就高效而便捷了。
UTF-8
如果按着上面Unicode的发展似乎一直这样又挺好的,但是有人就觉得明明一个字符的英文变两个了,能不能智能一点在不影响效率的情况下节省出哪一个空的字节呢。UTF-8格式就出来了,他们是在网络传输中将Unicode传输而设计的编码,8则是8位数即一个字节,这样的话就可以将非汉字的一个字节内存的字母或其他字符作为一个字节的内存数据传输起来,能够自动识别出两个字节的汉字还是一个字节的字符,将一个字节的字符原本统一规格多出来的那个空字节优化省去了这个内存。这样就达到了最高效的字符格式规范了。
1位 = 1比特(bit) 1字符 = 2字节(byte) =16位 = 16比特(bit)