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

作者: lynch0571 | 来源:发表于2016-04-25 11:24 被阅读1821次

有人说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

相关文章

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

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

  • 关于中文的编码格式

    char foo='中'? Java语言中,中文字符所占的字节数取决于字符的编码方式,一般情况下,采用ISO885...

  • JAVA中英文占用字节数

    JAVA对中文默认使用的是UTF-8编码JAVA对于不同编码,所占的字节数是不同的。具体如下: 测试代码如下:

  • 计算机是怎样跑起来的

    存储汉字时,字符编码不同,汉字所占用的字节数也就不同。在GBK字符编码下,一个汉字占用2个字节。而在UTF-8字符...

  • Mysql LENGTH() 和 CHAR_LENGTH()

    length():返回字符串所占的字节数(受编码影响). char_length():返回字符串中的字符数.

  • java 中的IO(字符流)

    以字符的方式读取 java中的 中文 在不同的编码中 占据不同的字节,java中提供了 字符流的方式读取中文 字符...

  • 写网关专用

    java二进制,字节数组,字符,十六进制,BCD编码转换/** */

  • 字符编码

    英文字母和中文汉字在不同字符集编码下的字节数 英文字母: 字节数 : 1;编码:GB2312 字节数 : 1;编码...

  • 各编码中,中英文字符所占字节数

    英文字母: 字节数 : 1;编码:GB2312 字节数 : 1;编码:GBK 字节数 : 1;编码:GB18030...

  • 字符集与字符编码

    字符与字符编码字符字符和字节不太一样,任何一个文字或符号都是一个字符,但所占字节不一定,不同的编码导致一个字符所占...

网友评论

  • Alex_Cin:楼主,你好,这个答案并不一定是正确的。多查查资料验证一下。例如:
    Unicode字符集下,UTF-8编码实现,1-4个字节表示字符,的变长编码;UTF-8中,英文字符是一个字节表示,常用中文字符使用三个字节表示,某些中文字符可能采用四字节表示。
    lynch0571:是的,情况很多,我这里提供的是一种思路
  • TalkToMyself:java平台的默认编码
  • 鸣鸣是你爱吃鱼:UTF-8常用汉字是3个字节,也有4个字节的
  • 写作_学习_成长:实践是检验真理的唯一标准 :smiley:
    lynch0571:@kobe00 是的,要多动手

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

本文链接:https://www.haomeiwen.com/subject/inafrttx.html