Java不同编码方式,中英文字符所占字节数

有人说Java中中文字符占2个字节,也有人说占3个字节,甚至还有人说占4个字节;

有人说Java中英文字符占1个字节,也有人说占2个字节,甚至还有人说占4个字节;

那么到底谁说的对?我的回答是都没错,具体要看是什么编码方式。纸上得来终觉浅,绝知此事要躬行,我编写了下边的代码,运行输出的结果就是答案。

代码如下:

public class Test {

    public static void main(String[] args){
        
        String[] charsetNames={    
                                    "UTF-8",
                                    "UTF-16",
                                    "UTF-16BE",
                                    "UTF-16LE",
                                    "UTF-32",
                                    "UTF-32BE",
                                    "UTF-32LE",
                                    "UNICODE",
                                    "GBK",
                                    "GB2312",
                                    "GB18030",
                                    "ISO8859-1",
                                    "BIG5",
                                    "ASCII"
                               }; 
        
        
        for(int i=0;i<charsetNames.length;i++){
            printByteLength(charsetNames[i]);
        }

    }
    
    /**
     * String类的不带参数的getBytes()方法会以程序所运行平台的默认编码方式为准来进行转换,
     * 在不同环境下可能会有不同的结果,因此建议使用指定编码方式的getBytes(String charsetName)方法。
     */
    public static void printByteLength(String charsetName){
        String en="a";    //一个英文字符
        String zh="啊";    //一个中文字符
        try {
            System.out.println(charsetName+"编码英文字符所占字节数:"+en.getBytes(charsetName).length);
            System.out.println(charsetName+"编码中文字符所占字节数:"+zh.getBytes(charsetName).length);
            System.out.println();
        } catch (UnsupportedEncodingException e) {
            System.out.println("非法编码格式!");
        }
    }
}
复制代码

运行结果:

UTF-8编码英文字符所占字节数:1
UTF-8编码中文字符所占字节数:3

UTF-16编码英文字符所占字节数:4
UTF-16编码中文字符所占字节数:4

UTF-16BE编码英文字符所占字节数:2
UTF-16BE编码中文字符所占字节数:2

UTF-16LE编码英文字符所占字节数:2
UTF-16LE编码中文字符所占字节数:2

UTF-32编码英文字符所占字节数:4
UTF-32编码中文字符所占字节数:4

UTF-32BE编码英文字符所占字节数:4
UTF-32BE编码中文字符所占字节数:4

UTF-32LE编码英文字符所占字节数:4
UTF-32LE编码中文字符所占字节数:4

UNICODE编码英文字符所占字节数:4
UNICODE编码中文字符所占字节数:4

GBK编码英文字符所占字节数:1
GBK编码中文字符所占字节数:2

GB2312编码英文字符所占字节数:1
GB2312编码中文字符所占字节数:2

GB18030编码英文字符所占字节数:1
GB18030编码中文字符所占字节数:2

ISO8859-1编码英文字符所占字节数:1
ISO8859-1编码中文字符所占字节数:1

BIG5编码英文字符所占字节数:1
BIG5编码中文字符所占字节数:2

ASCII编码英文字符所占字节数:1
ASCII编码中文字符所占字节数:1复制代码



转载于:https://juejin.im/post/5cf781efe51d45109725fe31

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值