一个String类型的变量,当它是中文时,调用length()怎么得到的长度是实际长度的一半呢?因为一个中文字符占两个字节啊?

kkk16 2003-08-20 05:15:23
一个String类型的变量,当它是中文时,调用length()怎么得到的长度是实际长度的一半呢?因为一个中文字符占两个字节啊?

比如:
String str = "我的字符串";
int len = str.length();

因为一个汉字占两个字节str的实际长度应该是10,而得到的len却是5。如果我字符串中既有中文又有英文长度就会很混乱。

怎么样才能使它认识汉字长度呢?
...全文
578 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
zfsusu 2004-03-03
  • 打赏
  • 举报
回复
呵呵,书后面有答案了,上面说“arrayofInt.length”函数用来取得数组中的元素数目。
qqbz 2004-03-03
  • 打赏
  • 举报
回复
你是用协议,一般都要求字节数组,就指定变为字节数组的编码方式,再求字节数组的长度
zfsusu 2004-03-03
  • 打赏
  • 举报
回复
这个问题还没有结帖吧,我来凑个热闹,刚看到的问题。

比如说有下面这么一个数组。

int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076,
2000, 8, 622, 127 };

范例代码里用到了arrayOfInts.length的方法,对于我以前的理解,这个length该是长度吧,
我写了这句代码 int sum=arrayOfInts.length;

System.out.println("sum的值是"+ sum +"\n");
已经知道sum值是 10。这里看来应该是表示数组成员的个数了。

按照楼上几位的说法, 好像不大对吧,我觉得可能JAVA比较聪明,会按间隔符号判断。要么就是arrayofInt的作用吧?

我不知道到哪里去找有关arrayofInt等的方法,我现在用的是最低的版本jdk1.1.只会用javac、java等命令,不知道哪里有帮助?可能要下载一下最新版本就好了吧,sun官方网站奇慢,可能是我自己的网络有问题。
hanty 2003-11-18
  • 打赏
  • 举报
回复
这么多牛人高人不错不错
loveflea 2003-11-18
  • 打赏
  • 举报
回复
String str = "我的字符串";
int lenB = str.getBytes().length();

jiaojian77 2003-08-20
  • 打赏
  • 举报
回复
amjn(神雕过儿) 不是说了吗?

str.getBytes().length
silentfish 2003-08-20
  • 打赏
  • 举报
回复

用getBytes方法获取字符串的字节数组,然后取数组的长度
kkk16 2003-08-20
  • 打赏
  • 举报
回复
指定数据长度是协议要求的事情。

谁能帮我解决这个问题吗?
chenbug 2003-08-20
  • 打赏
  • 举报
回复
为什么要指定发送长度?用连续的#号分割数据就可以了
TomClus8888 2003-08-20
  • 打赏
  • 举报
回复
也来凑分子
sasa_sasa 2003-08-20
  • 打赏
  • 举报
回复
Java采用Unicode码。所以一个字母和一个汉字是一样的长度。
liujuntao 2003-08-20
  • 打赏
  • 举报
回复
我通过网络发送时,要指定发送长度,可是如果有中文的话,发送的长度就会不对

如果接收方也是java就int len = str.length();指定好了
因为都采用一样的编码方式unicode,是不会有问题的了
否则的话,需要你自己判断,str里面是否有中文,就需要判断他的unicode,然后自己改变发送的长度
zhaoxichao 2003-08-20
  • 打赏
  • 举报
回复
同意楼上
amjn 2003-08-20
  • 打赏
  • 举报
回复
str.getBytes().length

因为java内部采用unicode
北极猩猩 2003-08-20
  • 打赏
  • 举报
回复
要发送的话,你就把length乘以2,java中英文也有两个字节
kkk16 2003-08-20
  • 打赏
  • 举报
回复
那我通过网络发送时,要指定发送长度,可是如果有中文的话,发送的长度就会不对?

String str = "我的字符串";
int len = str.length();

我用length来指定发送长度的话,就只能发一半数据过去。
我怎么样才能解决这个问题?
leier1979 2003-08-20
  • 打赏
  • 举报
回复
length返回的是字数,所以String str="abcde";int len=str.length();返回的肯定也是5。
javaVegetable 2003-08-20
  • 打赏
  • 举报
回复
我想,java使用的是Unicode编码,每个编码的长度都是统一的都是16bit即就是两个字节所以返回的应该是5个而不是10个。
tonyzhangcn 2003-08-20
  • 打赏
  • 举报
回复
java中是用UNICODE来表示的,也就是说,一个字母和一个汉字是一样的长度。
yingmuhuadao 2003-08-20
  • 打赏
  • 举报
回复
java是支持中文的
加载更多回复(1)

62,614

社区成员

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

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