黑马程序员技术交流社区

标题: 关于java中的char类型?? [打印本页]

作者: 董波    时间: 2013-5-2 12:41
标题: 关于java中的char类型??
本帖最后由 董波 于 2013-5-6 07:54 编辑

看API文档中说java使用UTF-8修改版,用1、2或3个字节表示一个字符;但是很多教科书上都说java是用2个字节表示一个字符。这两个说法不是冲突了吗?还是说这两种说法表达的是不同的东西?求指教。。
作者: wudongzhe    时间: 2013-5-2 12:49
常用中文字符用utf-8编码占用3个字节 教科书估计说的是GBK吧 GBK占2个字节,
作者: 吴传淦    时间: 2013-5-2 13:00
一个字符所占用的字节数是看编码表的,不同的编码,一个字符占的字节数也不同。
java的char类型默认使用的是Unicode,一个字符占用两个字节。
在java的API文档中UTF-8修改版:'\u0001' 到 '\u007F' 范围内的所有字符都是用单个字节表示的;
                              null 字符 '\u0000' 以及从 '\u0080' 到 '\u07FF' 的范围内的字符用两个字节表示;
                              '\u0800' 到 '\uFFFF' 范围内的 char 值用三个字节表示。
作者: 董波    时间: 2013-5-3 09:04
吴传淦 发表于 2013-5-2 13:00
一个字符所占用的字节数是看编码表的,不同的编码,一个字符占的字节数也不同。
java的char类型默认使用的 ...

我明白Java使用的是Unicode字符集,也知道Java用UTF-8修改版进行编码,就是不明白一会说是两个字节,一会又说三个字节,这到底是什么意思??
作者: 吴传淦    时间: 2013-5-3 09:15
董波 发表于 2013-5-3 09:04
我明白Java使用的是Unicode字符集,也知道Java用UTF-8修改版进行编码,就是不明白一会说是两个字节,一会 ...

UTF-8是可变长度的
在java的API文档中UTF-8修改版:'\u0001' 到 '\u007F' 范围内的所有字符都是用单个字节表示的;
                              null 字符 '\u0000' 以及从 '\u0080' 到 '\u07FF' 的范围内的字符用两个                        字节表示;
                              '\u0800' 到 '\uFFFF' 范围内的 char 值用三个字节表示。
作者: 黄玉昆    时间: 2013-5-3 22:18
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
作者: 董波    时间: 2013-5-4 08:29
本帖最后由 董波 于 2013-5-6 07:56 编辑
吴传淦 发表于 2013-5-3 09:15
UTF-8是可变长度的
在java的API文档中UTF-8修改版:'\u0001' 到 '\u007F' 范围内的所有字符都是用单个字 ...


Unicode的“2个字节”跟UTF-8中的“1、2、3个字节”到底是什么关系呢??
比如我把一个“好”字用UTF-8写入文件后,显示的是3个字节,在这个过程中,哪里体现出了Java使用的是Unicode的“2个字节”表示一个字符呢??




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