初识字符流

初识字符流,第1张

一,字符流

由于字节流 *** 作中文字符很不方便所以出现了字符流
汉字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();
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/729533.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存