解决eclipse中的Java文件,使用idea打开的乱码问题

原文: https://www.cnblogs.com/cjin-01/p/16632660.html

转码前:

在这里插入图片描述

转码后:

在这里插入图片描述

吐槽:

在克隆一些Github上面资源的时候,使用idea打开,会出现乱码的情况😖

而使用eclipse打开,这种情况就会消失。「是因为eclipse使用的是GBK编码,idea使用的是utf-8」

这种情况困扰了我好几次,我也试过各种软件再转码,但是没丁儿用!

终于,今天又碰到了;

是可忍,孰不可忍!

于是自己写了一个Java类,专门用来将GBK编码的Java文件,转换成utf-8编码✌️

ps:改一改,可以将utf-8,转换成GBK

技术点:递归,IO流

代码

以下是代码,如果是mac操作系统,以下代码应该不会有什么问题;

注意:

1、如果是window系统,文件路径/需要转换成\ (好像是的吧?)

2、强烈建议不要进行二次转换,更不要进行多次转换!!!

3、最好将需要转换的文件夹/文件复制一份,以免出现编码转换的意外

4、不要处理正常utf-8编码的文件!!

5、没了,以下代码有注释

package com.project_generator.eclipseConvert;

import org.junit.Test;

import java.io.*;
import java.util.List;

/**
 * 建议:最好将需要转换的文件夹/文件复制一份,以免出现编码转换的意外
 * 注意:不要进行二次转换,还有一定要确定被转换的文件是GBK格式的【一般,如果eclipse的文件放到idea中乱码,多半是GBK格式的】
 */
public class Converter {
// 复制完全一样的文件,包含文件夹里面的所有内容【略--手动处理】

    public static void main(String[] args) throws IOException {
            new Converter().converter(new File("这里填写自己文件夹or文件的绝对路径"));
    }
    
    @Test
    public void converter(File file) throws IOException {
        convertEclipseFiles(file); // 【必改,文件的路径】
        System.out.println("转换成功!");
    }

    public  void convertEclipseFiles(File file) throws IOException {
        if (!file.exists()) {
            throw new RuntimeException("此文件或文件夹不存在");
        }
        if (file.isFile() && file.getName().endsWith(".java")) { //【可改,将eclipse里面的Java文件编码改成utf-8】
            //!! 重写文件,最后删除原来的文件
            String absolutePath = file.getAbsolutePath();
            File file1 = new File(absolutePath.substring(0, absolutePath.length() - 5) + "_copy" + ".java");
            convertEncoding(file,file1);
            file.delete();
            file1.renameTo(new File(absolutePath));
        }
        if (!file.isFile()) {
            File[] fs = file.listFiles();// 获取当前文件夹下的子文件夹或者文件的file对象
            if (fs != null && fs.length > 0) {
                for (File ff : fs) {
                    convertEclipseFiles(ff);// 递归
                }
            }
        }
    }

    /*
     * 目标:把1.txt内容复制到2.txt
     */
    public void convertEncoding(File oldFile, File newFile) throws IOException {
        FileInputStream fis = new FileInputStream(oldFile);
        FileOutputStream fos = new FileOutputStream(newFile);
        byte[] content = new byte[1024];
        int read = fis.read(content);
        while (read != -1) {
//            System.out.println(new String(content, 0, read, "GBK")); // 查看read的结果
            fos.write(new String(content, 0, read, "GBK").getBytes("utf-8"));
            read = fis.read(content);
        }
    fis.close();
    fos.close();
    }
}
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论

打赏作者

qq_46617035

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值