|
用Java进行读写含中文的txt文件时,经常会出现乱码。原因很简单,就是系统和程序采用了不同的编码格式。通常,windows自身采用的编码格式是gbk(而gbk和gb2312基本上是一样的编码方式),如果IDE中Encode与之不同的话就会出现乱码问题。为了避免可能的中文乱码问题,最好在文件写入和读出的时候显式指定编码格式。
InputStreamReader类提供了可以指定编码格式的构造函数InputStreamReader(InputStream in, String charsetName);
相应的,OutputStreanWriter类也可以指定编码格式OutputStreamWriter(OutputStream out, String charsetName);
然后就可以构造自己的输入输出流了:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("filePath")),"charsetName"));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("filePath")),"charsetName"));
解决这一问题的关键是使用InputStreamReader类和OutputStreamWriter类来指定编码格式,其他类的构造可能不同。解决所有中文乱码问题的关键都是保证从头到尾的环境中使用与原始文件相同的编码格式。
|