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

推荐阅读更多精彩内容