黑马程序员技术交流社区

标题: 为什么能识别汉字的编码解码出错,不能识别汉字就没问题 [打印本页]

作者: 常文艺    时间: 2011-11-26 21:45
标题: 为什么能识别汉字的编码解码出错,不能识别汉字就没问题
先GBK编  UTF-8解 UTF-8编 GBK解 出错  换个ISO那个 就不出错  视频里没听明白。
作者: 刘一扬    时间: 2011-11-27 00:29
GBK 编码后占两字接,  ISO  1字节    U8不定字节 1-3.
GBK编完后  ISO解, 因为ISO占1字节 ,GBK编完后用ISO解肯定能解出来,而且正确,但解出来的字符是欧洲的字符,因为我们的操作系统默认编码集是GBK,只是别中文和英文,欧洲文字显示不了,所以在控制台上我们看到一堆问号,因为解码是正确的 ,所以在用ISO编码肯定没问题,编出来后用GBK再解一次出正确结果。

U8不一样,因为他可以占用1-3个字节,所以他有一套编码规则,什么3个字节最开头1110  第二个110  第三个10   貌似是,具体我也忘了,而我们用GBK编码后基本不会符合U8的编码规则,因为不符合U8的编码规则,所以U8会去它的未知字符区域去查,所有的未知字符都被编码为某个字符  这个字符编码是-17、-65、-67,这样一来,原始的编码也就破坏了,所以U8解不出来。根本的原因是U8编码有硬性的规定,不符合规定他就会给你乱解。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2