指定编码“gbk“,防止中文字符乱码

博客介绍了实现过程,重点提及InputStreamReader的底层源码,可通过传递参数charsetName来防止中文乱码,与Java开发相关。

 实现过程如下:

/**
 * 演示使用 InputStreamReader 转换流解决中文乱码问题
 * 将字节流 FileInputStream 转成字符流 InputStreamReader,指定编码 gbk/UTF-8
 */
public class InputStreamReader_ {
    public static void main(String[] args) throws IOException {
        String filePath = "E:\\aa.txt";
        //1.把 FileInputStream 转成 InputStreamReader
        //2.指定编码 gbk
        InputStreamReader iSr = new InputStreamReader(new FileInputStream(filePath), "gbk");
        //3.把 InputStreamReader 传入 BufferedReader
        BufferedReader br = new BufferedReader(iSr);
        String s =null;
        while((s=br.readLine())!=null){
            System.out.print(s+"\n");
        }
        br.close();
    }
}

 

public class InputStreamReader_ {
    public static void main(String[] args) throws IOException {
        String filePath = "E:\\aa.txt";
        //1.把 FileInputStream 转成 InputStreamReader
        //2.指定编码 gbk
"gbk");
        //3.把 InputStreamReader 传入 BufferedReader
        InputStreamReader isr = new InputStreamReader(new BufferedInputStream(new FileInputStream(filePath)),"gbk");
        int s = 0;
        while ((s = isr.read())!= -1) {
            System.out.print((char)s);
        }
        isr.close();
    }
}
public class InputStreamReader_02 {
    public static void main(String[] args) throws IOException {
        String filePath = "E:\\aa.txt";
        //1.把 FileInputStream 转成 InputStreamReader
        //2.指定编码 gbk
//        InputStreamReader iSr = new InputStreamReader(new FileInputStream(filePath), "gbk");
//        //3.把 InputStreamReader 传入 BufferedReader
//        BufferedReader br = new BufferedReader(iSr);
        //将2,3整合到一起
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath),"gbk"));
        String s =null;
        while((s=br.readLine())!=null){
            System.out.print(s+"\n");
        }
        br.close();
    }
}

 InputStreamReader的底层源码如下,可以传递参数charsetName,防止中文乱码

public InputStreamReader(InputStream in, String charsetName)
        throws UnsupportedEncodingException
    {
        super(in);
        if (charsetName == null)
            throw new NullPointerException("charsetName");
        sd = StreamDecoder.forInputStreamReader(in, this, charsetName);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值