Java文件操作時亂碼

文件操作時亂碼

在在用Java程序進行讀寫含中文的txt文件時,經常會出現讀出或寫入的內容會出現亂碼。原因其實很簡單,就是系統的編碼和程序的編碼採用了不同的編碼格式。通常,假如自己不修改的話,windows自身採用的編碼格式是gbk(而gbk和gb2312基本上是一樣的編碼方式),而IDE中Encode不修改的話,默認是utf-8的編碼,這就是爲什麼會出現亂碼的原因。

雖然我們在Windows下看記事本是UTF-8的編碼
在這裏插入圖片描述
但其實我們應該進行gbk編碼

  • 文件讀操作
	File file = new File("text.txt");
		if (file.exists()) {
			System.err.println("Exists");

			try {

				FileInputStream fis = new FileInputStream(file);
				InputStreamReader isr = new InputStreamReader(fis, "gbk");
				BufferedReader br = new BufferedReader(isr);
				String line;
				while ((line = br.readLine()) != null) {
					System.out.println(line);
				}
				br.close();
				isr.close();
				fis.close();

			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
  • 文件寫操作
try {
			File newfile = new File("newfile.txt");
			FileOutputStream fos = new FileOutputStream(newfile);//會自動創立文件
			OutputStreamWriter osw = new OutputStreamWriter(fos, "gbk");
			BufferedWriter bw =new BufferedWriter(osw);
			
			bw.write("Shuan斷文件是");
			
			
			bw.close();
			osw.close();
			fos.close();
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章