ASCII:[1967年]美国信息交换标准代码,是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言 。每个编码都暂用内存空间1byte(8bit)
1.一开始只占用7位,它由128个字符组成,包括大小写字母、数字0-9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等)组成。
2.后创建出了一些包括256个字符的(8bit被充分使用)由ASCII扩展的字符集(不国家还都不一样) ASCII
Unicode
关于Unicode我们需要追溯一下它产生的渊源。
当计算机普及到东亚时,遇到了使用表意字符而非字母语言的中、日、韩等国家。在这些国家使用的语言中常用字符多达几千个,而原来字符采用的是单字节编码,一张代码页中最多容纳的字符只有2^8=256个,对于使用表意字符的语言实在无能为力。既然一个字节不够,自然人们就采用两个字节,所以出现了使用双字节编码的字符集(DBCS)。不过双字节字符集中虽然表意字符使用了两个字节编码,但其中的ASCII码和日文片假名等仍用单字节表示,如此一来给程序员带来了不小的麻烦,因为每当涉及到DBCS字符串的处理时,总是要判断当中的一个字节到底表示的是一个字符还是半个字符,如果是半个字符,那是前一半还是后一半?由此可见DBCS并不是一种非常好的解决方案。
UTF-8:[1992年](8位元,Universal Character Set/Unicode Transformation Format)是针对Unicode的一种可变长度字符编码。 UTF-8
1byte来表示字符,可以兼容ASCII码;
特点:存储效率高,变长(不方便内存随机访问),无字节序问题(可作为外部编码)
UTF-16:
2byte表示一个字符;
可分为:UTF-16BE(big endian) ; UTF-16LE(little endian) ;
特点:定长(方便内部随机访问),有字节序问题(不可作为外部编码)
UTF-32:
4byte表示一个字符;
可分为:UTF-32BE(big endian) ; UTF-32LE(little endian) ;
特点:定长(方便内部随机访问),有字节序问题(不可作为外部编码)
整理:
1.编码存在大端小端时自然会存在字节序问题;大端文件开头编码: FF FE,反之小端为:FE FF (UTF-8不存在)
2.UTF-8编码,可以通过屏蔽位、移位进行快速操作快速读写