java基础-java读写文件中防止乱码有关问题

java基础----java读写文件中防止乱码问题
1.按文件的编码方式utf8进行相应的解码显示和编码写入(T.java编码方式utf8)
要进行读写的文件T.java使用utf8编码方式进行编码
内容:(按utf8显示)

//你好世界杯

执行下面代码
package com.hank.comments;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Test {
	public static void main(String[] args) throws IOException {
		//BatchComments.java 的编码方式是utf8,在读取数据的时候也,也用utf8解码,写入时也用utf8编码后写入
		//如果文件时utf8编码的,用gbk解码会乱码,同样,utf8编码的,写入时用gbk,也是乱码
		File file = new File("D:/Workspaces/MyEclipse 10/ttttt/src/T.java");
		String characterSet = "utf8";//file用什么编码方式存的,就用什么编码方式去读和写,如这里是utf8
		
		//1.读取过程
		InputStream is = new FileInputStream(file);
		InputStreamReader isr = new InputStreamReader(is, characterSet);//文件什么编码方式存的,就用什么编码方式读取
		BufferedReader br = new BufferedReader(isr);
		String str1 = null;
		while((str1 = br.readLine()) != null) {
			System.out.println(str1);
		}
		br.close();
		isr.close();
		is.close();
		
		//2.写入过程
		FileWriter fw = new FileWriter(file, true);
		BufferedWriter bw = new BufferedWriter(fw);
		//把要写入的字符串都按照要写入文件的编码方式生成,再写入
		String str2 = new String("我爱世界杯".getBytes(characterSet), characterSet);
		System.out.println(str2);
		bw.write(str2);
		bw.flush();
		bw.close();
		fw.close();
	}
}


console端显示

//你好世界杯
我爱世界杯


写入的文件T.java显示,(按照T.java的编码方式utf8)

//你好世界杯我爱世界杯


2.不按文件的编码方式gbk进行相应的解码显示和编码写入
要进行读写的文件T.java使用的是gbk编码方式进行编码
内容:(按gbk显示)

//你好中国

执行上面的代码,不按文件的真实编码方式解码和编码写入

console端显示

//����й�
我爱世界杯

原因:乱码是因为用utf8界面gbk乱码,下面的显示正确是因为显示的java的unicode

写入的文件T.java显示,(按照T.java的编码方式gbk)

//你好中国鎴戠埍涓栫晫鏉�
原因:你好中国不乱码是因为:就是用gbk编码的,用gbk解码就不会乱码
后面是新增加的,编码方式是utf8,用gbk解码显示是乱码


所以:我可以果断判断,如果用utf8解码显示,应该原有的用gbk编码的是乱码,新增加的是正常的
如下:

//����й�我爱世界杯