Java字符集【ASCII,GBK,Unicode】

1.常见字符集

        1.标准ASCII字符集

                美国信息交换标准代码,包括了英文、符号等。

                标准ASCII使用1个字节存储一个字符,首位是0,总共可表示128个字符,对美国人来说完全够用。

        

        2.GBK(汉字内码扩展规范,国标)

                GBK中一个中文字符编码成两个字节的形式存储

                注意:GBK兼容了ASCII字符集。

                注意:GBK规定:汉字的第一个字节的第一位必须是1

        3.Unicode字符集

                Unicode是国际组织制定的,可以容纳世界上所有文字、符号的字符集。

                UTF-8:是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节,2个字节,3个字节,4个字节

                英文字符、数字等只占1个字节(兼容标准ASCII编码),汉字字符占用3个字节。

         4.注意事项       

                字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码

                英文,数字一般不会乱码,因为很多字符集都兼容了ASCII编码

        总结:

                ASCII字符集:只有英文、数字、符号等,1个字节

                lGBK字符集:汉字占2个字节,英文、数字占1个字节

                UTF-8字符集:汉字占3个字节,英文、数字占1个字节

2.字符集的编码、解码操作

                

package com.itheima.day09.teacher.io;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class ChangeCodeDemo {

    /*
      完成编码和解码
         编码
           将字符按照指定的字符集 转换成 字节。
         解码
           将字节按照指定的字符集 转换成 字符。
       String中提供 编码和解码的方法
     */
    public static void main(String[] args) throws UnsupportedEncodingException {
        //编码  字符串--字节数组
        String str = "a我b";
        // getBytes() 按照默认字符集
        byte[] bytes = str.getBytes();
        System.out.println(bytes.length);
        System.out.println(Arrays.toString(bytes));
        // getBytes(String charsetName) 按照指定字符集
        byte[] gbks = str.getBytes("GBK");
        System.out.println(gbks.length);//4
        System.out.println(Arrays.toString(gbks));

        // 将字节按照指定的字符集 转换成 字符。解码操作
        // 字节---字符    字节数组---字符串
        //  String 有构造   String(byte[] bytes)// 将字节数组按照默认的字符集 进行转换成 字符串
        String s1 = new String(bytes);//按照 默认字符集
        System.out.println(s1);

        String s2 = new String(gbks);//按照A的方式编码 按照B的方式解码 会出现乱码
        System.out.println(s2);

        //  String 有构造   String(byte[] bytes,String charsetName)// 将字节数组按照指定的字符集 进行转换成 字符串
       String s3 = new String(gbks,"gbk");
        System.out.println(s3);

    }
}

                

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值