站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题汉字问题

汉字问题

摘要: 汉字问题


java中的中文长度是1,这和C中的中文长度不一样,能否在保证字符串内容不变的情况下,使中文长度和C语言一致呢,谢谢


在JAVA中char和byte是两个不同的概念。
而在C中,如果你使用宽字符集,中英文字符的长度也是一样的。


那是不是就没有办法了?郁闷啊


在Java的String上调用getBytes,返回的byte数组,其性质倒是很像楼主想要的东西。:)


比如:

String s = "我常来CSDN";
System.out.println(s.length());//会打印出7
byte[] bytes = s.getBytes();
System.out.println(bytes.length);//会打印出10



s.getBytes();请谨慎使用。这个会使用系统的默认编码来转换。应该明确指定编码。

public class TestInner {
public static void main(String[] args) throws Exception {
System.out.println("A".getBytes("ASCII").length);
System.out.println("汉".getBytes("ASCII").length);
System.out.println("A".getBytes("GBK").length);
System.out.println("汉".getBytes("GBK").length);
}
}



楼上有经验!
赞!!


ncowboy大侠说的是对的。

我刚写下那几会代码时,其实也写了个“GBK”的,后来想到并非每种平台都支持GBK的,干粹就去掉了,让系统自己看着办去吧,呵呵。


GB2312 "汉"字也是两位呀

有点迷糊了


不是两位三位的问题,如果系统中不支持GBK,getBytes会出错的。


出错了可以理解呀

可是
System.out.println("汉".getBytes("ASCII").length);是一位,而
System.out.println("汉".getBytes("GB2312").length);是两位就有点不理解了



MS932:1
ASCII:1
GB2312:2 //***
Unicode:4
utf-8:3 //***
iso-8859-1:1
utf-16:4 //***
utf-16be:2 //***
utf-16le:2


看来还得查查编码的问题呀


找来找去还是回来了CSDN :)
有兴趣大家也看看
http://blog.csdn.net/NetMicrobe/archive/2006/10/10/1329393.aspx


↑返回目录
前一篇: vector问题
后一篇: 请教,为什么线程非安全的还是正确的结果