问题:
Java中中英文分别占几个字节?如果数据量很大,或者存储空间不足的时候,可能需要考虑字节的占用大小,用于估计使用机器的数量。
方案:
很简单的:
1个字符=2个字节
1个字节=8位
1个英文字符占一个字节,也就是0.5个字符
1个中文字符占2-4个字节,这个需要区分编码情况,具体如下:
UTF8编码下: 1个中文字符占3个字节(少数占4个字节)
GBK编码下: 1个中文字符占2个字节
UTF16编码下:1个中文字符占2个字节,Unicode扩展区的一些汉字存储需要4个字节
上面其实不好记,最好的方法是放到程序里面去实际运行一下看看。
例子:
07 |
*
@email dutycode@gmail.com |
12 |
public class BytesDemo
{ |
14 |
public static void main(String[]
args) { |
15 |
String
e1 = "english" ; |
18 |
byte []
eb1 = e1.getBytes(); |
19 |
byte []
cb1 = c1.getBytes(); |
21 |
byte []
ebUTF8 = e1.getBytes(Charset.forName( "utf8" )); |
22 |
byte []
cbUTF8 = c1.getBytes(Charset.forName( "utf8" )); |
24 |
byte []
ebGbk = e1.getBytes(Charset.forName( "gbk" )); |
25 |
byte []
cbGbk = c1.getBytes(Charset.forName( "gbk" )); |
27 |
System.out.println( "英文字符:" +
eb1.length); |
28 |
System.out.println( "中文字符,默认(UTF8):" +
cb1.length); |
29 |
System.out.println( "英文字符,(UTF8):" +
ebUTF8.length); |
30 |
System.out.println( "中文字符,(UTF8):" +
cbUTF8.length); |
31 |
System.out.println( "英文字符,(GBK):" +
ebGbk.length); |
32 |
System.out.println( "中文字符,(GBK):" +
cbGbk.length); |
运行结果:

java 字符和字节的关系
原文:http://blog.csdn.net/losetowin/article/details/40717009