gb2312中的英文字母占几个字节?

byte[] bb="hello".getBytes("gb2312");
    System.out.println("bb.length:::"+bb.length);
    for(byte bb1:bb)
     System.out.println((char)bb1);
运行代码得到如下结果:
bb.length:::5
h
e
l
l
o


我查了一些资料,都说gb2312中的所有字符都是用二个字节表示。如果是这样,那我上面的程序中bb字节数组的长度应该是10啊
可结果却是却是5.我想请问gb2312中的英文字母符号到底是用几个字节表示啊?


ASCII 英文一个字节 
gb2312,gbk 中文两个字节,英文一个字节 
在中文系统中ansi一般指gb2312或gbk 
GB2312、GBK都属于双字节字符集 (DBCS) 
Utf-8 中文三个字节,英文一个字节 
Unicode 中文两个字节,英文两个字


嘿嘿,权威的如何解释GB2312不是sun公司,而是我们国家自己的标准啊,每一个大专、大学的任何学生,其计算机基础课程中都会详细讲解GB2312的啊。
byte[] bb="hello".getBytes("gb2312"); 
    System.out.println("bb.length:::"+bb.length); 
我查了一些资料,都说gb2312中的所有字符都是用二个字节表示。如果是这样,那我上面的程序中bb字节数组的长度应该是10啊 
可结果却是却是5.我想请问gb2312中的英文字母符号到底是用几个字节表示啊?
答:GB2312中1区到15区共682个字符或图形符号都是全角方式下的字符。即:
若byte[] bb="hello".getBytes("gb2312");(注意是全角方式下),bb字节数组的长度就会是10了。
因此:gb2312中的所有字符都是用二个字节表示(是因为:它的字符都是全角方式)。gb2312中不会对半角方式下的字符编码的(这是ASCII码的事情),因此:在getBytes("gb2312");转换时,半角的字符都是一个字节,全角的同样字符才是两个字节。

最后让我们再用文本编辑工具ultraEdit做个小实验:

新建一个txt文件,分别以ansi、unicode、utf-8编码另存三个文件,删除原始文件,如下所示:


可以看到unicode.txt、utf-8.txt两个文件在文件内容为空时文件大小已经不是0了,这个问题待会我们再讨论。

然后我们使用ultraEdit工具打开三个文件,




在文件内容为空时几个文件的大小如上图所示。

接下来我们继续做实验,在三个文件中都输入一个英文字符[a],然后再看下每个文件大小的变化




通过对比可以发现:

(记得计算时要分别减去之前空文件所占的字符长度)

ansi_gbk英文字符占1Byte

unicode英文字符占2Byte

utf-8英文字符占1Byte

好,我们接着来测试中文字符的长度,然后再在每个文件中输入一个中文字符[]




通过对比可以发现:

(记得计算时要分别减去之前空文件所占的字符长度)

ansi_gbk中文字符占2Byte

unicode中文字符占2Byte

utf-8中文字符占3Byte


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值