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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lh994749769 中级黑马   /  2014-11-26 10:07  /  1402 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                String str = "string字符串";
                byte[] buf = str.getBytes();
                str = new String(buf);
在上面代码中实现了字符串转换成字节然后再转换成字符的过程
问题 1.buf的大小为12也就是一个字母是1个字节一个汉字是两个字节,这是什么编码表?
问题 2.在字节转换成字符的时候系统怎么知道应该将一个字节转换成字符还是讲两个字节转换成字符呢


评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

5 个回复

倒序浏览
一个字母是占一个字节的,一个汉字占一个字符(2个字节)
回复 使用道具 举报
冬天的雪 发表于 2014-11-26 10:48
一个字母是占一个字节的,一个汉字占一个字符(2个字节)

这个我知道啊,那字节转换成字符的时候,是怎么判断应该转换一个字节还是两个字节呢???还有这事通过什么编码表转换的呢
回复 使用道具 举报
刚才自己测试了下,好像是用的GBK编码表,只用用这个编码解码str.getBytes("GBK"),再次用默认编码表编码的时候才不会出现乱码,GBK在编码ASCII能编码的部分是一个字节,再用一个字节中ASCII没有用到的部分加上另个一个字节编码汉字;所以GBK的特性才有
1.能够兼容ASCII
2.字母(准确来说是ASCII所能编码的部分)是用的一个字节,汉字是两个字节
回复 使用道具 举报
自解了,,,,,,
回复 使用道具 举报
进来学习一下~~~~~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马