ASCII、UNICODE、GB2312、GBK、GB18030是字符集,UTF-8、UTF-16、UTF-32是编码。下面说一下他们的来历。
最早的计算机采用ASCII,这个编码长度是8位,也就说可以表示256个符号。如果只是表示英文这些符号够用了。但是,中文没有办法表示,怎么办?
中国人发明了GB2312,这个字符集结构是这样的,长度16位,两个字节,只要两个字节大于127的就认为是汉字,这样,就会有7000多个符号可以用了。而常用6000多个中文。这就是伟大的GB2312了。但是还是不够,有很多生僻字没有符号表示,这些文字怎么办?好吧,我们继续扩充吧。不要求第二字节必须大于127了。只要第一个字节大于127,我们就认为是中文。这样增加到了2W多个符号。这就是伟大的GBK就是GB2312的扩充。问题又来了,中国有很多少数名族哈,这些少数名族的字符怎么办?好吧,干脆把少数民族文字、数字、字母……全部一锅烩了。这就出现了GB18030,在GB18030编码中有两种数字和字母,全角和半角,前字节127之前的是半角。之后出现的是全角。GB18030统称为DBCS(双字节字符集)。
说完中国说世界的,
上面讲的无论那种字符集无法世界通用,这时就出现了UNICODE,这个字符集是可变字符集,所谓的可变指的是长度可变,如果是英文就是8位(全角的算中文),如果中文就16位、24位、32位,貌似只有(O)圈是2两个字节。其他都是3个字节。中日韩的大字符集才是4个字节。
最早的计算机采用ASCII,这个编码长度是8位,也就说可以表示256个符号。如果只是表示英文这些符号够用了。但是,中文没有办法表示,怎么办?
中国人发明了GB2312,这个字符集结构是这样的,长度16位,两个字节,只要两个字节大于127的就认为是汉字,这样,就会有7000多个符号可以用了。而常用6000多个中文。这就是伟大的GB2312了。但是还是不够,有很多生僻字没有符号表示,这些文字怎么办?好吧,我们继续扩充吧。不要求第二字节必须大于127了。只要第一个字节大于127,我们就认为是中文。这样增加到了2W多个符号。这就是伟大的GBK就是GB2312的扩充。问题又来了,中国有很多少数名族哈,这些少数名族的字符怎么办?好吧,干脆把少数民族文字、数字、字母……全部一锅烩了。这就出现了GB18030,在GB18030编码中有两种数字和字母,全角和半角,前字节127之前的是半角。之后出现的是全角。GB18030统称为DBCS(双字节字符集)。
说完中国说世界的,
上面讲的无论那种字符集无法世界通用,这时就出现了UNICODE,这个字符集是可变字符集,所谓的可变指的是长度可变,如果是英文就是8位(全角的算中文),如果中文就16位、24位、32位,貌似只有(O)圈是2两个字节。其他都是3个字节。中日韩的大字符集才是4个字节。