GBK转UTF-8
最近在学习字符编码,网上很多在讨论GBK转UTF-8,我就是不知道这个过程到底是什么转的。下面是我在网上看到的帖子不晓得这样转对不对;
首先“三只小熊”的 GBK 编码为:C8FD D6BB D0A1 D0DC
拆成字节为:C8 FD D6 BB D0 A1 D0 DC
根据 Unicode 与 UTF-8 编码转换规则:
Java code
Unicode Code UTF-8 Code
0000~007F 0xxxxxxx
0080~07FF 110xxxxx 10xxxxxx
0800~FFFF 1110xxxx 10xxxxxx 10xxxxxx
10000~10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
先从第一个字节 C8 开始看,C8 只能匹配第二行的转换,也就是采用两个字节,
这时第一个字节匹配成功,再匹配后一个字节 FD,规范要求的第二个字节是
10xxxxxx 因此 C8 FD 转换失败,C8 这时采用 UTF-8 的缺失字符 EF BF BD 即
Unicode 的 U+FFFD 来替换,在我们的平台上显示为 ? 了。
要是这样转换的话,所有的汉字都会按照第二行( 0080~07FF 110xxxxx 10xxxxxx)的转换,那不是有很多汉字没法转吗.