初识字符流

一,字符流

由于字节流操作中文字符很不方便所以出现了字符流
汉字gbk编码占用两个字符,UTF-8占用3个字节,并且每个汉字的第一个字节都是负数,以方便拼接

二,编码表

计算机中储存的信息都是用二进制数表示的;我们在屏幕上看到的英文、汉字等字符是二进制敷转换之后的结果
按照某种规则,将字符存储到计算机中,称为编码。
反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码。

三,字符串的编码与解码

编码用getByte()方法
解码String s=new String()
编码与解码方式要一样否则会乱码

比如之前的代码

//用的就是String s=new String()的方法解码,在这里可以指定编码格式:new String(bye,"UTF-8")
        len=fis.read(bye);
        System.out.println(len);
        System.out.println(new String(bye));
//用的就是getByte方法去编码,这里同样可以指定编码格式:"world".getBytes("UTF-8")
        fos.write("hello".getBytes());
        fos.write("world".getBytes());

四,字符流的的编码与解码

字符流的抽象基类:Reader、Writer
字符流中和编码解码问题相关的类:InputStreamReader、OutputStreamReader

InputStreamReader
它是从字节流到字符流的桥梁,读取字节并按指定的编码格式将其解码为字符
OutputStreamReader
它是从字符流到字节流的桥梁,使用指定的编码格式将写入的字符编码为字节
默认为UTF-8

下面是练习

import java.io.*;

public class Character {
    public static void main(String[] args) throws IOException {
//        OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("C:\\data\\writer.txt"),"GBK");
//        osw.write("落霞与孤鹜齐飞,秋水共长天一色。");
//        读写用的编码格式不同,乱码:��ϼ�������ɣ���ˮ������һɫ��
//        InputStreamReader isr=new InputStreamReader(new FileInputStream("C:\\data\\writer.txt"),"UTF-8");
//        读写用的编码格式相同同,正常读出:落霞与孤鹜齐飞,秋水共长天一色。
        InputStreamReader isr=new InputStreamReader(new FileInputStream("C:\\data\\writer.txt"),"GBK");
        int by;
        while((by=isr.read())!=-1){
            System.out.print((char)by);
        }
        isr.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值