1.ASCII字符集:仅对英文字符编码,每个字符用1B编码,7位二进制足以表示所有ASCII字符集,因此最高位始终为0
2.GBK字符集:GB2312字符集(简体中文字符集)+BIG5字符集(台湾地区繁体中文字符集),GBK是简体中文版Windows系统默认的字符集(不同Windows版本的字符集都互不兼容,但其中的每个字符集都称作ANSI,因此简体中文版Windows系统显示字符集是ANSI,但实际使用的是GBK字符集)
(1)英文编码方式:GBK完全兼容ASCII,因此英文编码与ASCII相同,编码长度也为1B
(2)汉字编码方式:每个汉字用2B编码,最高位为1(与英文编码区分),转数字后是负数
3.Unicode字符集:包含世界各种语言的字符集
(1)编码方式:
①UTF-16编码规则:用2~4个字节保存。
②UTF-32编码规则:固定使用4个字节保存。
③UTF-8编码规则:用1~4个字节保存,其中ASCII文字用1字节保存,拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文用2字节保存,中日韩文字、东南亚文字、中东文字用3字节保存,其它语言用4字节保存。对于1个字节的ASCII文字的编码都是0开头,而n(n>1)字节的编码,首个字节以n个1+1个0开头,其余字节以10开头。
(2)英文编码方式:Unicode完全兼容ASCII,因此英文编码与ASCII相同,编码长度也为1B
(3)汉字编码方式:将汉字字符在Unicode中对应数字的二进制xxxxxxxx xxxxxxxx(16位)依次填入到1110xxxx 10xxxxxx 10xxxxxx(16个填充位)中
4.乱码出现的原因:
(1)读取数据时未读完整个字符
(2)编码方式与解码方式不一致