Java 解决字符流读取文本文件中文乱码情况

本文描述了博主在使用Java字符流读取D盘中文文件时遇到的乱码问题,原因是文件编码被误设为ANSI。给出了两种解决办法:一是修改文件编码为UTF-8,二是修改代码中BufferedReader的输入流编码为GBK。讨论了转换流的概念,以及为何在处理文本数据时指定编码的重要性。
摘要由CSDN通过智能技术生成

问题描述:

        博主使用字符流读取D盘ok.txt文件时出现中文乱码的问题。

问题截图:

问题分析:

        在window操作系统中文本文件的编码集默认是UTF-8,而Java中使用的编码格式也是UTF-8,与之对应,所以在不对文本文件进行修改的情况下是不会出现中文乱码的情况。仔细检查文本的编码格式发现,不小心修改编码格式为ANSI编码,从编码是国标编码,系统使用的是那个地区的语言就是该地区的国标编码,中文的国标编码的GBK。

问题解决:

        方法一:

                修改文本编码为UTF-8,解决中文乱码情况。

        方法二:

                修改源代码,BufferedReader 传入的参数通过InputStreamReader包装成一个字符流。

          在InputStreamReader中指定编码格式为gbk。

package com.javaio.transformation;

import java.io.*;

public class CodeQuestion {
    public static void main(String[] args) throws IOException {
        String filePath = "d://ok.txt";
        InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(filePath),"gbk");

        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        String s = null;
        s = bufferedReader.readLine();

        System.out.println(s);

        bufferedReader.close();

    }
}

问题涉及知识点:

        转换流的概念

                将字节流转换成字符流。

                InputStreamReader:Reader的子类,可以将inputStream(字节流)包转成Reader(字

          符流)

                OutputStreamWriter:Writer的子类,实现将OutputStream(字节流)包装成Writer(字

         符流)

                当处理纯文本数据时,如果使用字符流效率更高,并且可以有效解决中文乱码问题,所

        以建议将字节流转成字符流。

                可以在使用时指定编码格式(比如 UTF-8,gbk,gb2312,ISO8859-1等)。

引发思考:

为什么需要转换流?

转换流主要解决什么方便的问题?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值