文字セットと符号化方式のテスト理解


文字セットと符号化方式は2つの異なる概念であり、大体:文字セットは文字の集合であり、符号化方式は文字が具体的なバイナリに変換される規則である.
質問:
1つのファイルはGBKで符号化され、中国語の文字セットが書かれています.
ではUTF-8を使うとき、何に注意する必要がありますか?
興味深い小さなテストです
srcの下に2つのファイル、元のファイルを配置します
backそのコードはutf-8符号化に設定次のjavaコードもutf-8符号化、gbk-utf.txtそのファイルはGBKコードに設定して、勝手に漢字を打つ

public class IOCharsetConvert {
	
	public static void main(String[] args) throws Exception {
		// , , 
		String path="D:\\springdemo1.0\\src\\main\\java\\";
		String fileNamePrimitive=path+"gbk-utf8.txt";
		List<String> list=read(fileNamePrimitive, "GBK");
		BackFile(path+"gbk-utf8-back.txt", list);
						
	}
	private static List<String> read(String fileName,String convertCharSet) throws Exception{
		BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(fileName),convertCharSet));
		List<String> sbuffer=new ArrayList<String>();
		String str=null;
		while((str=br.readLine()) != null){
			sbuffer.add(str);
			System.out.println("test-->>"+str);
		}
		br.close();
		return sbuffer;
	}
	
	public static void BackFile(String backFileName,List<String> strbuffer) throws IOException{
		BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(backFileName)));
		for(String str:strbuffer){
			bw.write(str);
		}
		bw.flush();
		bw.close();
	}

}

1.コードを実行する--対応するbackファイルを見て、コードは問題なくて、漢字はすべて正常です
2.back符号化とjava符号化が一致せず、プログラムを実行し、効果を確認し、文字化を乱す
3.コードが一致している場合はgbkまたはutf-8がすべて正常であっても
結論:
これらの中国語文字セットはGBKに対応して下位層に格納されている具体的な2級制形式であり、UTF-8でこれらの2級制を使用するとUTF-8に対応する中国語文字に対応できないに違いない.
私達のjavaファイルの時UTF-8は符号化して、それではGBKは読み込んだ文字に従って、UTF-8の中で文字を増加します
最後の出力はどうなりますか?これらのUTF-8で表される文字を対応するファイルに二次的に出力します.このファイルの下部はもちろん二次的に表されるのでjavaコードの符号化形式で表示する必要があります.