ascii
- ascii使用一个字节表示,使用7个bit位,可以表示128个字符,最高位使用0.
eg:
01111111
00010100
01010100
- ascii仅仅能表示128个字符,因此后来又提出了unicode编码。
unicode
- unicode编码使用三个字节表示,这张表中包含了所有的字符,理论上可以表示2的24次方个字符。
- 但是unicode编码也是有问题的,我们通常使用的都是ascii包含的128个字符,但是使用unicode编码,却使用三个字节,这大大浪费了存储空间。
utf-8
- utf-8是可变编码,可以使用一到六个字节表示,为了区别于ascii,表示为:
U-00000000 – U-0000007F: 0xxxxxxx
U-00000080 – U-000007FF: 110xxxxx 10xxxxxx
U-00000800 – U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 – U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 – U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 – U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
计算机内部的编码方式
- 计算机硬盘上通常使用uft-8编码来保存数据,但是当加载到内存上时,便会将utf-8编码转换为unicode编码存储在内存中,在内存内便是unicode编码。
- 比如当我们打开一个文件时,操作系统封将文件的内容加载到内存中,将在硬盘中的utf-8编码转换成unicode编码,当我我们编辑完成时,操作系统再将内容写入硬盘,将unicode转换成utf-8编码(在硬盘上位utf-8是因为节省空间,在内存中为unicode是因为每个字符都是三个字节处理)。
网友评论