美文网首页
Java实现批量文件GBK转UTF-8

Java实现批量文件GBK转UTF-8

作者: Briarbear | 来源:发表于2018-06-03 13:18 被阅读0次

经常阅读书籍附赠代码时或者其他源码时,会遇到很多GBK编码的文本文件,比如java文件,其中的中文在其他编辑器下阅读的效果不好,
如vscode,sublime(也可用插件解决),要是直接能批量将GBK编码的文件转UTF-8该多好,于是,去网上找了相关的软件,结果很遗憾,
就是自己动手造轮子吧,才有这个小工具

  • 更多相关文章见笔者博客

示例源码

package xin.val1ant;

import org.apache.commons.io.FileUtils;


import java.io.*;

import java.util.HashSet;
import java.util.Set;

/**
 * 批量实现文件GBK to UTF-8
 */
public class Main {



    public static void main(String[] args) {
        String path = args[0];
        String[] strings = path.split(",");
        Set<String> types = new HashSet<String>();
        for (String s : strings) {
            types.add(s);
        }
        File directory = new File(".");
//        System.out.println(directory.getAbsolutePath());
        handle(directory.getAbsolutePath(),types);

    }


    public static void handle(String path,Set<String> types){

        File[] files = new File(path).listFiles(); //获取该目录下所有文件或者目录
        if (files != null){
            for (File file : files) {
                if (file.isDirectory()){
                    //如果是路径,则递归调用
                    handle(file.getAbsolutePath(),types);
                }else {
                    String fileName = file.getName();
                    try {
                        String charset = getCharset(file.getAbsoluteFile());
//                        String charset = FileUtils
                        if (charset.equals("GBK") && types.contains(fileName.substring(fileName.lastIndexOf(".")+1))){
                            //输出过程
                            System.out.println(fileName+": charset encode converting........");
                            //如果编码为GBK 且在指定文件类型范围内
                            FileUtils.writeLines(new File(file.getAbsolutePath()),"UTF-8",FileUtils.readLines(file,"GBK"));
                        }

                    } catch (IOException e) {
                        System.out.println("获取文件编码异常");
                        e.printStackTrace();
                    }
                }
            }
        }
    }

    private static String getCharset(File file) throws IOException {

        BufferedInputStream bin = new BufferedInputStream( new FileInputStream(file));
        int p = (bin.read() << 8) + bin.read();
        String code = null;
        //其中的 0xefbb、0xfffe、0xfeff、0x5c75这些都是这个文件的前面两个字节的16进制数
        switch (p) {
            case 0xefbb:
                code = "UTF-8";
                break;
            case 0xfffe:
                code = "Unicode";
                break;
            case 0xfeff:
                code = "UTF-16BE";
                break;
            case 0x5c75:
                code = "ANSI|ASCII" ;
                break ;
            default:
                code = "GBK";
        }

        return code;

    }

}





使用说明

  • 本开源工程很简单,里面的源码可供Java程序员学习交流,由于是原始版本,也未作其他测试,可能会存在转码失败,请联系本作者修复

  • 针对非程序员用户,可直接将根目录下的convert.jar文件复制到你需要转码的文件夹下面

  • 然后在正确配置Java环境变量的情况下,(未转为exe可执行文件,望见谅),具体配置java环境变量可自信百度,谷歌

  • 执行命令格式java -jar convert.jar 参数1,参数2,其中参数为你需要转码的文本格式文件,参数已逗号(英文逗号)分隔

  • 示例

    java -jar convert.jar txt,java,md 
    # 则会将该目录下所有的txt、java、md文件的GBK编码转成UTF-8编码
    

开源见码云、Github;如有其它问题,请联系作者

相关文章

  • Java实现批量文件GBK转UTF-8

    经常阅读书籍附赠代码时或者其他源码时,会遇到很多GBK编码的文本文件,比如java文件,其中的中文在其他编辑器下阅...

  • iOS GBK文件转UTF-8

    写了一个工具实现GBK文件转UTF-8或者UTF-8转GBK。具体代码如下: 使用方法,编译上面代码,得到可执行程序。

  • 编码转shell脚本

    使用 iconv 把GBK 转换为 UTF-8 使用 iconv 把UTF-8转换为 GBK

  • 批量转码-GBK转UTF-8

    使用Xcode查看代码时出现乱码问题,将代码转换成UTF-8格式就可以了。下面是转换脚本,方便以后查看。

  • GBK文件转UTF-8

    今天遇到一个比较棘手的问题,在处理用户的数据的时候,让用户从另一个软件中导出文件,但是文件导出之后是GBK编码的。...

  • 批量修改文件编码

    1. 功能 批量将某几种编码的文件转变成另一种编码的文件。例如将GBK编码的文件转成UTF-8编码的文件 2. 代...

  • Linux下GBK编码文件批量转UTF-8

    执行 sudo vim ~/.bashrc 添加下面方法 在对应的目录下执行 iconv_java_to_utf8...

  • 2018-08-02字符串与UTF-8之间的转换

    java String 转utf-8编码 utf-8转Java String

  • grunt运行时,scss文件报编码错误

    sass文件为GBK编码时,运行grunt会有警告,导致页面报错。解决方法: 可将文件统一转码为utf-8 在ru...

  • 批量转换文件编码GBK to utf-8

    find + iconv的组合会强制给文件添加.cpp.cpp类似的后缀,所以组合mv指令 ,放在shell脚本里...

网友评论

      本文标题:Java实现批量文件GBK转UTF-8

      本文链接:https://www.haomeiwen.com/subject/mydjsftx.html