乱码问题
从文件中读取出现乱码主要有以下两个原因:
- 编码字符集不统一
- 截取长度不不够
解决方法
将文件以字节流读入,转换为字符流操作
字节流读入 --InputStreamReader–> 字符缓冲流读入
字节流写出 --OutputStreamReader–> 字符缓冲流写出
new InputStreamReader();
new OutputStreamWriter();
两个问题示例代码
package cn.hxh.io.convert;
import java.io.UnsupportedEncodingException;
public class convertDemo01 {
public static void main(String[] args) throws UnsupportedEncodingException {
String str = "你好";
byte[] data = str.getBytes("gbk");//指定编码
byte[] data1 = str.getBytes();
System.out.println(new String(data,"utf-8"));
System.out.println(new String(data1,1,3));//长度不够
}
}
引入转换流
package cn.hxh.io.convert;
import java.io.*;
public class convertDemo02 {
public static void main(String[] args) throws IOException {
BufferedReader rd = new BufferedReader(
new InputStreamReader(
new FileInputStream(
new File("D:/aa/a.txt")), "utf-8"));
BufferedWriter wr = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(
new File("D:/aa/b.txt"))));
String s = null;
while(null != (s = rd.readLine())) {
wr.write(s);
wr.newLine();
wr.flush();
}
wr.close();
rd.close();
}
}