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

时间:2021-01-02 20:38:59
int ic=new String("a").getBytes().length; 为什么得1,java不是unicode的吗,应该得2吧?

12 个解决方案

#1


.length得到的是字符串的长度啊."a"这个字符串不就一个字符吗?那长度就是1.
这与它占几个字节没有关系.长度就是指就是几个字符

#2


对了.说.length得到的有点不确切.
length是个属性,不是方法.

#3


说的好 !完全正确!

#4


数组里面length是属性!
难道String里面也是属性吗?

#5


byte[] b=new String("a").getBytes();

int i=b.length;

i得值应该是几?

#6


学习

#7


学习ing

#8


getbyte是用你机器默认的编码方式对java内部的ucs-2字符串进行解码所得到的byte
所以这个得到的byte不是unicode编码的字节,而是你机器平台的默认编码方式对应的字节
比如GBK或者latin1

#9


String 是一个特殊的类呀,是类怎么会没有方法呢?
奇怪...

#10


getbyte是用你机器默认的编码方式对java内部的ucs-2字符串进行解码所得到的byte
所以这个得到的byte不是unicode编码的字节,而是你机器平台的默认编码方式对应的字节
比如GBK或者latin1
==========================
明白了,string.getbyte()是返回本机默认编码方式的字节。

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

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

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

现在的方式搞得很胡涂。

#11


enjoy java way:)

#12


唉,刚开始用Java做东西,难道又要开始研究一个新的语言的各个方法的细节?

#1


.length得到的是字符串的长度啊."a"这个字符串不就一个字符吗?那长度就是1.
这与它占几个字节没有关系.长度就是指就是几个字符

#2


对了.说.length得到的有点不确切.
length是个属性,不是方法.

#3


说的好 !完全正确!

#4


数组里面length是属性!
难道String里面也是属性吗?

#5


byte[] b=new String("a").getBytes();

int i=b.length;

i得值应该是几?

#6


学习

#7


学习ing

#8


getbyte是用你机器默认的编码方式对java内部的ucs-2字符串进行解码所得到的byte
所以这个得到的byte不是unicode编码的字节,而是你机器平台的默认编码方式对应的字节
比如GBK或者latin1

#9


String 是一个特殊的类呀,是类怎么会没有方法呢?
奇怪...

#10


getbyte是用你机器默认的编码方式对java内部的ucs-2字符串进行解码所得到的byte
所以这个得到的byte不是unicode编码的字节,而是你机器平台的默认编码方式对应的字节
比如GBK或者latin1
==========================
明白了,string.getbyte()是返回本机默认编码方式的字节。

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

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

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

现在的方式搞得很胡涂。

#11


enjoy java way:)

#12


唉,刚开始用Java做东西,难道又要开始研究一个新的语言的各个方法的细节?