面试问到如何用Java解决字节流乱码问题?看完这篇教你“从容应敌”!
1. 转换流
- InputStreamReader
- OutputStreamWriter
2. InputStreamReader 类
转换流java.io.InputStreamReader
,是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集。
构造方法
InputStreamReader(InputStream in)
: 创建一个使用默认字符集的字符流。InputStreamReader(InputStream in, String charsetName)
: 创建一个指定字符集的字符流。
3. OutputStreamWriter 类
转换流java.io.OutputStreamWriter
,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集。【获取资料】
构造方法
OutputStreamWriter(OutputStream in)
: 创建一个使用默认字符集的字符流。OutputStreamWriter(OutputStream in, String charsetName)
: 创建一个指定字符集的字符流。
4. 读取文件
使用转换流设置读取编码为UTF-8
InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"),"UTF-8");
package com.se.file;
import java.io.*;
public class Demo06_Fis_乱码 {
public static void main(String[] args) {
BufferedReader bfr = null;
try {
加入Java开发交流君样:484138291一起吹水聊天
InputStreamReader isr = new InputStreamReader(new FileInputStream(