标签:
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:tufujiepuyang@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的文件,否则适当缩小文件夹包含范围。
标签:
原文地址:http://www.cnblogs.com/tufujie/p/5137564.html