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

转码前:

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

转码后:

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

核心方法:

new String(content, "GBK").getBytes("utf-8"));

吐槽:

在克隆一些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、没了,以下代码有注释

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文件的绝对路径"));
    }

    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();
    }
}

Original: https://www.cnblogs.com/cjin-01/p/16632660.html
Author: 2337
Title: 解决eclipse中的Java文件,使用idea打开的乱码问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/575370/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • WCF IIS 用户名消息安全 可能碰到的问题

    在IIS 托管WCF其实很简单 在要提供服务的文件目录下新建一个*.SVC,内容类似 Baice.eTerm.SearchService.Service.SearchTicket(…

    Java 2023年6月14日
    065
  • 2022-8-26 jq简单了解

    Query 是一个 JavaScript 函数库。 jQuery 是一个轻量级的”写的少,做的多”的 JavaScript 库。jQuery 库包含以下功能…

    Java 2023年6月13日
    072
  • 关于C语言的学习 01

    include void main() //定义主函数 { //main 函数体开始 函数声明部分 C语言的各种语句 } //main函数结束 代码输出HelloWorld! 例子…

    Java 2023年6月5日
    0100
  • Spring(三)——AOP

    (1)面向切面编程(方面),利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。(2)通俗描述:不通过…

    Java 2023年6月16日
    066
  • 【java并发核心一】Semaphore 的使用思路

    最近在看一本书《Java并发编程 核心方法与框架》,打算一边学习一边把学习的经验记下来,所粘贴的代码都是我运行过的,大家一起学习,欢迎吐槽。 估计也没多少人看我的博客,哈哈,那么我…

    Java 2023年5月29日
    0105
  • 常见API使用

    String类 字符串相关的类 Java程序中的所有字符串文字(例如”abc”)都实现为此类的实例 字符串是不变的 他们的值在创建后无法更改 Date类 D…

    Java 2023年6月8日
    057
  • 关闭 Firefox 的 Ctrl/Cmd + 滚轮 缩放网页的设置

    在 Mac 上装了 Firefox 之后,时不时就会遇到滚轮滚着滚着就变成缩放网页了,点一下地址栏的缩放按钮又恢复正常。换 Safari 和 Chrome 一段时间后并没有遇到这样…

    Java 2023年6月5日
    084
  • JAVA入门基础_从零开始的培训_JAVAWEB

    1、前端知识的学习 HTML(Hyper Text Markup Language)超文本标记语言 常见标签 文字、段落标签 图片标签 列表标签 表单 a标签 Tomcat新建项目…

    Java 2023年6月9日
    0109
  • Java 中HashMap详解(含HashTable, ConcurrentHashMap)

    本篇重点: 1.HashMap的存储结构 2.HashMap的put和get操作过程 3.HashMap的扩容 4.关于transient关键字 5.HashMap, HashTa…

    Java 2023年6月16日
    089
  • mvn 打包和启动jar包

    mvn=======打包 mvn -B clean package -e -U ‘-Dmaven.test.skip=true’ 启动jar包 java -…

    Java 2023年6月16日
    094
  • 【C#】TreeView 数据多加载慢的问题 IsVirtualizing

    在 WPF中TreeView数据列表过大,加载速度很慢,可以在前端Xaml中增加一行: VirtualizingPanel.IsVirtualizing="True&qu…

    Java 2023年5月29日
    089
  • Nginx禁用缓存的配置

    在网站程序调试的时候,经常会遇到浏览器的缓存问题导致修改过的前端代码无效果。每次通过Ctrl+F5强制刷新后才能清掉缓存。这时如果禁用掉nginx缓存,可以减少一些小麻烦,让浏览器…

    Java 2023年5月30日
    086
  • 声明式事务控制

    编程式事务控制相关对象 PlatformTransactionManager接口是 spring 的事务管理器,它里面提供了我们常用的操作事务的方法。 注意:PlatformTra…

    Java 2023年6月7日
    084
  • GateWay

    即满足某种规则之后即向指定路径路由,否则应为404。 #参数合并写法 spring: cloud: gateway: routes: – id: after_route #路由规则…

    Java 2023年6月16日
    0109
  • IDEA通用配置

    文件的自动author注释 posted @2020-09-18 16:54 风小雅 阅读(197 ) 评论() 编辑 Original: https://www.cnblogs….

    Java 2023年6月6日
    087
  • java保留小数点,数字格式化

    注意: 1、整数除法会取整,不会保留小数点,需要保留小数,转为float在除 方法1、使用字符串格式化 <span class="hljs-function&quo…

    Java 2023年6月13日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球