Java字符流中的编码解码问题

字符流抽象基类:

Reader:字符输入流的抽象类

Writer: 字符输出流的抽象类

字符流中和编码解码问题相关的两个类:

InputStreamReader

OutputStreamWriter

程序查看
package ma.Demo38;

import java.io.*;

/*
    构造方法:
    OutputStreamWriter(OutputStream out) 创建一个使用默认字符编码的OutputStreamWriter。
    OutputStreamWriter(OutputStream out, String charsetName) 创建一个使用命名字符集的OutputStreamWriter。

    InputStreamReader(InputStream in) 创建一个使用默认字符集的InputStreamReader。
    InputStreamReader(InputStream in, String charsetName) 创建一个使用命名字符集的InputStreamReader。

 */
public class CharacterStreamDemo {
    public static void main(String[] args) throws IOException {
//        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("javaSE_code\\osw.txt"));

//        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("javaSE_code\\osw.txt"),"UTF-8");

        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("javaSE_code\\osw.txt"),"GBK");

        osw.write("吃鱼");

        //释放资源
        osw.close();

        InputStreamReader isr = new InputStreamReader(new FileInputStream("javaSE_code\\osw.txt"),"GBK");

        //一次读取一个字符数据
        int ch;
        while ((ch = isr.read()) != -1){
            System.out.print((char)ch);
        }

        //释放资源
        isr.close();
    }
}

 1、UTF-8编码格式

 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("javaSE_code\\osw.txt"));//使用 IDEA 默认编码格式(UTF-8)

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("javaSE_code\\osw.txt"),"UTF-8");//使用 UTF-8 编码格式

使用 UTF-8 编码格式输出的文件可在 IDEA 的文件中正常看到内容,不会产生乱码

2、GBK编码格式

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("javaSE_code\\osw.txt"),"GBK");//使用 GBK 编码格式

使用 GBK 编码格式输出的文件在 IDEA 中查看内容,会产生乱码,可以用字符输入流解码在 IDEA 程序中查看内容

InputStreamReader isr = new InputStreamReader(new FileInputStream("javaSE_code\\osw.txt"),"GBK");
int ch;
while ((ch = isr.read()) != -1){
    System.out.print((char)ch);
}

且在程序文件中依旧是乱码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值