CoreJava中编码

本文详细介绍了多种编码类型,包括ASCII、ISO-8859-1、GB2312、GBK、GB18030、UTF-16和UTF-8,并通过编程示例展示了不同编码下字符长度的变化,揭示了各编码的特点和适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.编码介绍
    1.ASCII码:
        总共有128个,用字节的低7位表示,0-31控制字符如换行回车删除等,32-126打印字符,可以通过键盘输入显示
    2.ISO-8859-1
        对ASCII编码的扩展,ISO-8859-1涵盖大多数西欧语言字符,应用广泛,单字节编码,总共能表示256个字符
    3.GB2312
        全称是《信息交换用汉字编码字符集 基本集》,双字节编码,总的编码范围是A1-F7,从A1-A9是符号区,
        总共包含682个字符,从B0-F7是汉字区,包含6763个汉字。
    4.GBK
        全称叫《汉字内码扩展规范》,是对GB2312的扩展,加入了更多汉字,编码范围8140-FFFF(去掉XX7F)
        共23940个码位,它能表示21003个汉字,兼容GBK2312,也就是说用GBK2312编码的汉字可以用GBK编码,不会乱码。
    5.GB18030
        全称是《汉字交换用汉字编码字符集》,是我国的强制标准,它可以是单字节,双字节或者四字节编码,兼容GBK2312,
        虽然是国家标准,但是应用不广泛。
    6.UTF-16
        具体定义了Unicode字符在计算机中的存取方法,UTF-16用两个字节表示Unicode转化格式,这个是定长表示
        方法,不管什么字符都可以用两个字节表示,两个字节是16个bit,在操作字符串的时候大大简化了操作,放大了存储空间。
    7.UTF-8
        UTF-8 采用了一种变长技术,每个编码区域有不同的字码长度。不同类型的字符可以是由 1~6 个字节组成。


二.编程验证

package com.briup.BriupTest.day13;

public class ByteTest {
	public static void main(String[] args) throws Exception {
		String a = "中";
		          System.out.println("UTF-8编码长度:"+a.getBytes("UTF-8").length);
		         System.out.println("GBK编码长度:"+a.getBytes("GBK").length);
		         System.out.println("GB2312编码长度:"+a.getBytes("GB2312").length);
		          System.out.println("==========================================");
		  
		          String c = "0x20001";
		         System.out.println("UTF-8编码长度:"+c.getBytes("UTF-8").length);
		         System.out.println("GBK编码长度:"+c.getBytes("GBK").length);
		         System.out.println("GB2312编码长度:"+c.getBytes("GB2312").length);
		         System.out.println("==========================================");
		 
		         char[] arr = Character.toChars(0x20001);
		         String s = new String(arr);
		         System.out.println("char array length:" + arr.length);
		         System.out.println("content:|  " + s + " |");
		         System.out.println("String length:" + s.length());
		         System.out.println("UTF-8编码长度:"+s.getBytes("UTF-8").length);
		         System.out.println("GBK编码长度:"+s.getBytes("GBK").length);
		         System.out.println("GB2312编码长度:"+s.getBytes("GB2312").length);
		         System.out.println("==========================================");

	}
}

运行结果:

UTF-8编码长度:3
GBK编码长度:2
GB2312编码长度:2
==========================================
UTF-8编码长度:7
GBK编码长度:7
GB2312编码长度:7
==========================================
char array length:2
content:|  ? |
String length:2
UTF-8编码长度:4
GBK编码长度:1
GB2312编码长度:1
==========================================

 

三,图解

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值