A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董波 中级黑马   /  2013-5-2 12:41  /  1660 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 董波 于 2013-5-6 07:54 编辑

看API文档中说java使用UTF-8修改版,用1、2或3个字节表示一个字符;但是很多教科书上都说java是用2个字节表示一个字符。这两个说法不是冲突了吗?还是说这两种说法表达的是不同的东西?求指教。。

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

7 个回复

倒序浏览
常用中文字符用utf-8编码占用3个字节 教科书估计说的是GBK吧 GBK占2个字节,
回复 使用道具 举报
一个字符所占用的字节数是看编码表的,不同的编码,一个字符占的字节数也不同。
java的char类型默认使用的是Unicode,一个字符占用两个字节。
在java的API文档中UTF-8修改版:'\u0001' 到 '\u007F' 范围内的所有字符都是用单个字节表示的;
                              null 字符 '\u0000' 以及从 '\u0080' 到 '\u07FF' 的范围内的字符用两个字节表示;
                              '\u0800' 到 '\uFFFF' 范围内的 char 值用三个字节表示。

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
吴传淦 发表于 2013-5-2 13:00
一个字符所占用的字节数是看编码表的,不同的编码,一个字符占的字节数也不同。
java的char类型默认使用的 ...

我明白Java使用的是Unicode字符集,也知道Java用UTF-8修改版进行编码,就是不明白一会说是两个字节,一会又说三个字节,这到底是什么意思??
回复 使用道具 举报
董波 发表于 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-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个字节”表示一个字符呢??
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马