字符集:字符集规定了某个文字对应的二进制数字存放方式(编码)和某串二进制数值代表了哪个文字(解码)的转换关系。计算机可以输出打印的是实体化的文字,但是在计算机存储中存放的是二进制的bit流,如何把这两者之间做准确的互相转换就需要一个标准,字符集就规定了这个标准。
字符编码:字符集只是一个规则集合的名字,要正确编码转码一个字符需要3个元素:字库表(保存所有可显示的字符),编码字符集(用一个编码值表示一个字符在字库中的位置),字符编码(把编码字符集和实际存储数值之间的转换关系),栗子:在ASCll中A在表中排65,所以A编码后的数值01000001等于十进制的65转换成二进制的结果。
utf-8:UTF-8编码为变长编码。最小编码单位是一个字节。一个字节的前1-3个bit为描述性部分,后面为实际序号部分。
如果一个字节的第一位为0,那么代表当前字符为单字节字符,占用一个字节的空间。0之后的所有部分(7个bit)代表在Unicode中的序号。
如果一个字节以110开头,那么代表当前字符为双字节字符,占用2个字节的空间。110之后的所有部分(7个bit)代表在Unicode中的序号。且第二个字节以10开头
如果一个字节以1110开头,那么代表当前字符为三字节字符,占用2个字节的空间。110之后的所有部分(7个bit)代表在Unicode中的序号。且第二、第三个字节以10开头
如果一个字节以10开头,那么代表当前字节为多字节字符的第二个字节。10之后的所有部分(6个bit)代表在Unicode中的序号。
uncode和utf-8的关系:Unicode就是编码字符集,而UTF-8就是字符编码,即Unicode字库的一种实现形式。