如何使用Java代码将GBK编码格式的工程转换为UTF-8编码格式的工程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Java代码将GBK编码格式的工程转换为UTF-8编码格式的工程相关的知识,希望对你有一定的参考价值。

不写代码的话可以直接找个批量转换文本编码的软件搞定。

写代码稍微复杂一些。

    新建一个目录

    遍历递归原工程目录,以gbk编码读取,以utf8编码写文件到新的目录下即可。

    手动重命名工程为 工程备份

    手动重命名新目录为 工程名

    检查无误后删除工程备份

参考技术A private static void GbkToutf8(File file)

BufferedReader br = null;
BufferedWriter bw = null;
StringBuilder sb=new StringBuilder();
try

try

br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "GBK"));
String line=null;
int count=0;
while ((line = br.readLine()) != null)

count++;
if(count>1)

sb.append("\n");

sb.append(line);


finally

br.close();

bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
bw.write(sb.toString());

catch (UnsupportedEncodingException e)

// TODO Auto-generated catch block
e.printStackTrace();

catch (FileNotFoundException e)

// TODO Auto-generated catch block
e.printStackTrace();

catch (IOException e)

// TODO Auto-generated catch block
e.printStackTrace();

finally

try

bw.close();

catch (IOException e)

// TODO Auto-generated catch block
e.printStackTrace();


Java工程编码格式由GBK转化成utf-8(编码格式互转)

在写项目的过程中我发现有的地方编码格式被设置成了 gbk 如果用eclipse等工具直接改回utf-8编码格式则会出现乱码。

在这里搞了一个工具,直接输入之前的编码格式跟要改的编码格式就会自动转换
在这里插入图片描述
转换完成后直接设置为更改后的格式即可
在这里插入图片描述

以下是源代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;

/**
 * 把gbk编码的程序变换为用utf-8的格式编码
 *
 * 此程序只是为了改变 .java文件的编码格式如果你想要变换为其他格式只需要改变下面对应的编码按格式
 *
 * @author 明金同学	CSDN:https://ymjin.blog.csdn.net/
 */
public class Files {

    /**
     *
     * @param args
     * @throws UnsupportedEncodingException
     * @throws IOException
     */
    public static void main(String[] args) throws UnsupportedEncodingException, IOException {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入需要改变编码格式的文件位置");
        String str = scan.nextLine();
        File file = new File(str);
        System.out.println("文件的初始编码");
        String bm1 = scan.nextLine();
        System.out.println("文件需要转换成的编码");
        String bm2 = scan.nextLine();
        getAllFiles(file, bm1, bm2);
    }

    /**
     *
     * @param file 要编译的文件
     * @param bm1 文件的初始编码
     * @param bm2 文件需要转换成的编码
     * @throws FileNotFoundException 文件找不到
     * @throws UnsupportedEncodingException 编码出错
     * @throws IOException io异常
     */
    public static void getAllFiles(File file, String bm1, String bm2) throws FileNotFoundException, UnsupportedEncodingException, IOException {
        if (file.isDirectory()) {
            File[] test = file.listFiles();
            for (File test1 : test) {
                //类的名字
                String str = test1.getPath();
                if (str.endsWith("java") & test1.isFile()) {
                    String[] s = str.split("\\\\.");
                    String filecope = s[0] + "cope." + s[1];
                    System.out.println(filecope);
                    File fil = new File(filecope);
                    //转格式
                    InputStreamReader isr = new InputStreamReader(new FileInputStream(test1), bm1);
                    OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream(fil), bm2);
                    int re = -1;
                    while ((re = isr.read()) != -1) {
                        osr.write(re);
                    }
                    isr.close();
                    osr.close();
                    InputStreamReader isrr = new InputStreamReader(new FileInputStream(fil), bm2);
                    OutputStreamWriter osrw = new OutputStreamWriter(new FileOutputStream(test1), bm2);
                    int r = -1;
                    while ((r = isrr.read()) != -1) {
                        osrw.write(r);
                    }
                    isrr.close();
                    osrw.close();
                    boolean d = fil.delete();
                    System.out.println(str + "文件转换utf-8成功:" + d);
                }
                getAllFiles(test1, bm1, bm2);
            }
        }
    }

}

参考:
将GBK项目修改成UTF-8项目
https://blog.csdn.net/chengzhuo5471/article/details/100840187
https://my.oschina.net/momomo/blog/845610

以上是关于如何使用Java代码将GBK编码格式的工程转换为UTF-8编码格式的工程的主要内容,如果未能解决你的问题,请参考以下文章

Java工程编码格式由GBK转化成utf-8(编码格式互转)

编码gbk的不可映射字符要怎么解决

java 将编码格式为utf-8的文件内容以 GBK编码存到txt文档

Windows系统下Eclipse下默认的编码格式是啥?GBK?已有的工程文件转换为UTF-8之后为何不能正确读取?

php 将中文转换为GBK编码

如何将gbk 编码的字符串转换成 utf