int ic=new String("a").getBytes().length; 为什么得1,java不是unicode的吗,应该得2吧?

wd8_6532 2006-09-22 05:58:55
int ic=new String("a").getBytes().length; 为什么得1,java不是unicode的吗,应该得2吧?
...全文
231 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wd8_6532 2006-09-23
  • 打赏
  • 举报
回复
唉,刚开始用Java做东西,难道又要开始研究一个新的语言的各个方法的细节?
ykzhujiang 2006-09-23
  • 打赏
  • 举报
回复
enjoy java way:)
wd8_6532 2006-09-23
  • 打赏
  • 举报
回复
getbyte是用你机器默认的编码方式对java内部的ucs-2字符串进行解码所得到的byte
所以这个得到的byte不是unicode编码的字节,而是你机器平台的默认编码方式对应的字节
比如GBK或者latin1
==========================
明白了,string.getbyte()是返回本机默认编码方式的字节。

string.getbyte("unicode")是返回unicode编码方式的字节。

我感觉,java这个地方做的不好,这个getbyte不应该有2个声明

一个就够了 getbyte(string charset=常量) 默认是本机就行了。

现在的方式搞得很胡涂。
guoyibin 2006-09-23
  • 打赏
  • 举报
回复
String 是一个特殊的类呀,是类怎么会没有方法呢?
奇怪...
ykzhujiang 2006-09-22
  • 打赏
  • 举报
回复
getbyte是用你机器默认的编码方式对java内部的ucs-2字符串进行解码所得到的byte
所以这个得到的byte不是unicode编码的字节,而是你机器平台的默认编码方式对应的字节
比如GBK或者latin1
wxiaof2005 2006-09-22
  • 打赏
  • 举报
回复
学习ing
J_fox 2006-09-22
  • 打赏
  • 举报
回复
学习
wd8_6532 2006-09-22
  • 打赏
  • 举报
回复
byte[] b=new String("a").getBytes();

int i=b.length;

i得值应该是几?
meadking 2006-09-22
  • 打赏
  • 举报
回复
数组里面length是属性!
难道String里面也是属性吗?
dbwang 2006-09-22
  • 打赏
  • 举报
回复
说的好 !完全正确!
yyjn12 2006-09-22
  • 打赏
  • 举报
回复
对了.说.length得到的有点不确切.
length是个属性,不是方法.
yyjn12 2006-09-22
  • 打赏
  • 举报
回复
.length得到的是字符串的长度啊."a"这个字符串不就一个字符吗?那长度就是1.
这与它占几个字节没有关系.长度就是指就是几个字符

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧