Java IO流之字符集总结

ASCII字符集、GBK字符集、Unicode字符集

这里我直接上总结了,关于这三种字符集的基本介绍大家可以百度一下。

  1. 在计算机中,任意数据都是以二进制的形式来存储的
  2. 计算机中最小的存储单元是一个字节
  3. ASCII字符集中,一个英文占一个字节
  4. 简体中文版Windows,默认使用GBK字符集
  5. GBK字符集完全兼容ASCII字符集
    一个英文占一个字节,二进制第一位是0
     一个中文占两个字节,二进制高位字节的第一位是1
  6. Unicode字符集的UTF-8编码格式
     一个英文占一个字节,二进制第一位是0,转成十进制是正数
     一个中文占三个字节,二进制第一位是1,第一个字节转成十进制是负数

使用字节流读取数据为什么会有乱码?

  • 原因一:读取数据时未读完整个汉字
  • 原因二:编码和解码时的方式不统一

如何解决?

  • 不要用字节流读取文本文件
  • 编码解码时使用同一个码表,同一个编码方式

Java中编码的方法

在这里插入图片描述

Java中解码的方法

在这里插入图片描述

代码演示:

package com.liming.charset;

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

public class CharSetDemo {
    public static void main(String[] args) throws UnsupportedEncodingException {
        //编码
        String str = "ai你呦";
        byte[] bytes = str.getBytes();//默认不写UTF-8
        System.out.println(Arrays.toString(bytes));

        byte[] bytes1 = str.getBytes("GBK");
        System.out.println(Arrays.toString(bytes1));
        //解码
        String str2 = new String(bytes);
        System.out.println("默认编码方式:" + str2);

        String str3 = new String(bytes1,"GBK");
        System.out.println("GBK编码方式:" + str3);
    }
}

运行效果图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小钟不想敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值