所谓gbk,是中国制定的字符集标准,一个汉字对应一个gbk编码。
所谓宽字符,实质是unicode,是世界制定的字符集标准,一个汉字对应一个unicode编码。
所谓utf8,并不是一个字符集,只是一个编码方案,将unicode转为utf8所需要的格式,就是utf8编码。
以汉字“武”为例,
gbk编码为
206 228,占用2个字节
unicode或宽字符,编码为
27494,占用2个字节,二进制表现形式为
01101011 01100110
utf8编码为
230 173 166,占用3个字节,二进制表现形式为
11100110 10101101 10100110
细心看就会发现,utf8实质是unicode编码按utf8要求的格式填进去的。
0800~ FFFF 12~16 1110 XXXX 10 XX XXXX 10 XX XXXX 3
2个字节,16位,正好填入这16个X
0110 1011 01 100110 unicode编码汉字“武”
1110 0110 10 101101 10 100110 utf8编码汉字“武”