zoukankan      html  css  js  c++  java
  • Eclipse修改编码后乱码解决

    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("
    ");
                line = br.readLine();
            }
            ps.write(msg.toString());
            br.close();
            ps.flush();
            ps.close();
        }
    
    }

    代码中修改文件夹名,运行,从转换到的文件夹复制所有文件到原来文件夹,代码中修改文件夹名。。。反反复复这三步,发现我的文件夹也太多了,这样也会累个半死,于是只能转战转换工具,网上搜索:gbk转utf-8软件,一大堆工具,很多都是支持批量处理,打开工具,选择一个文件夹(这下可以是任意的,没有限制,上面代码还限制文件夹中不能存在文件夹),轻轻松松转换,这下,编码问题彻底解决。唯一遗憾的是这样大批量处理会导致原先是utf-8的文件出现错误,所以建议批量处理时文件夹在最大化的情况下避免存在已经是utf-8的文件,否则适当缩小文件夹包含范围。

  • 相关阅读:
    Ubuntu安装搜狗输入法
    Ubuntu 命令
    ubuntu忽然不能登录,输入密码正确一直返回登录界面
    chmod用法
    Maven学习(六)maven使用中遇到的坑
    win10下装mysql-5.7.18-winx64
    Maven学习(五)使用Maven构建多模块项目
    Maven学习(四)eclipse创建maven项目
    Maven学习(三)maven原理概念详述
    Struts2+Hibernate4+Spring4框架整合搭建Java项目原型
  • 原文地址:https://www.cnblogs.com/tufujie/p/5137564.html
Copyright © 2011-2022 走看看