Eclipse用了一段時間,都是用的gbk編碼的,突然想要規范下,強迫症犯了,於是將在Window->Preference->Appearances->Workspace修改Text file encoding為UFT-8,一點擊確認,Oh,My God!中文都亂碼了,一開始想的是用記事本將文件一個一個的另存為UTF-8格式,累死了,發現工程量太大,放棄了,轉戰代碼,下面是可實現的代碼,支持批量處理(即處理一個文件夾內的所有代碼),不支持文件夾下還有文件夾的情況!代碼如下:
package com.tfj.demo; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; /** * @function 將批量的gbk的亂碼文件轉換到utf8 * 將gbk的代碼放到srcDir之下,轉碼置destDir之下,不支持srcDir之下有目錄,srcDir目錄與destDir目錄不能一樣 * @author Jacksile E-mail:tufujietec@foxmail.com * @date 2016年1月16日 下午3:02:07 */ public class UTF8Parser { static File srcDir = new File("E:\\eclipse2\\studyall\\src\\com\\tfj\\algorithm"); // 待轉碼的GBK格式文件夾 static File destDir = new File("E:\\eclipse\\studyall\\src\\com\\tfj\\algorithm"); // 轉碼成UTF8的目標文件夾 public static void main(String[] args) { // 1.判斷是目錄 if (!srcDir.isDirectory()) { return; } // 2.遍歷所有目錄 File[] fs = srcDir.listFiles(); // 創建目標目錄 if (!destDir.exists()) { destDir.mkdirs(); } try { new UTF8Parser().parse(fs); } catch (IOException e) { e.printStackTrace(); } } /** * 目錄就迭代遍歷;文件就重編碼 */ private void parse(File[] fs) throws IOException { for (File file : fs) { if (!file.isDirectory()) { File destFile = new File(destDir, file.getName()); parse2UTF_8(file, destFile); } else { parse(file.listFiles()); } } } /** */ private void parse2UTF_8(File file, File destFile) throws IOException { StringBuffer msg = new StringBuffer(); // 讀寫對象 PrintWriter ps = new PrintWriter(new OutputStreamWriter(new FileOutputStream(destFile, false), "utf8")); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "gbk")); // 讀寫動作 String line = br.readLine(); while (line != null) { msg.append(line).append("\r\n"); line = br.readLine(); } ps.write(msg.toString()); br.close(); ps.flush(); ps.close(); } }
代碼中修改文件夾名,運行,從轉換到的文件夾復制所有文件到原來文件夾,代碼中修改文件夾名。。。反反復復這三步,發現我的文件夾也太多了,這樣也會累個半死,於是只能轉戰轉換工具,網上搜索:gbk轉utf-8軟件,一大堆工具,很多都是支持批量處理,打開工具,選擇一個文件夾(這下可以是任意的,沒有限制,上面代碼還限制文件夾中不能存在文件夾),輕輕松松轉換,這下,編碼問題徹底解決。唯一遺憾的是這樣大批量處理會導致原先是utf-8的文件出現錯誤,所以建議批量處理時文件夾在最大化的情況下避免存在已經是utf-8的文件,否則適當縮小文件夾包含范圍。