用java将GBK工程转为uft8的方法实例

发布时间 - 2026-01-11 02:45:36    点击率:

本文介绍了用java将GBK工程转为uft8,分享给大家,具体如下:

windows下的默认编码为GBK还有gb2312,如何把gbk的java工程转为utf8的呢,如果直接修改工程编码,其实里面的java文件中中文是会乱码的,写了个批量转换java工程的程序,消遣一下。

为什么要转码?

有些老的项目,或者朋友的项目之前没注意在windows上不是utf8,而你有需要看注释或者什么,总不能一个文件一个文件的去改编码属性吧。

本程序试用范围

gbk的代码,或者gb2312的工程均可以转换

编码转换的思路

本来想做成一个通用的会自动检测编码,自动转换的程序。但是由于判断编码类型不准,所以做成了针对GBK的转换。

  1. 制定gbk编码把文件流读进来,加载到内存,转为String类型的内容
  2. 将String内容转为utf8的String
  3. 将String内容写入文件

核心代码:

public class TransferProject{
  public static void transferFile(String pathName,intdepth)throwsException{
    File dirFile = new File(pathName);
    if (!isValidFile(dirFile)) return;
    //获取此目录下的所有文件名与目录名
    String[] fileList = dirFile.list();
    int currentDepth = depth + 1;
    for (int i = 0; i < fileList.length; i++) {
      String string = fileList[i];
      File file = new File(dirFile.getPath(), string);
      String name = file.getName();
      //如果是一个目录,搜索深度depth++,输出目录名后,进行递归
      if (file.isDirectory()) {
        //递归
        transferFile(file.getCanonicalPath(), currentDepth);
      } else {
        if (name.contains(".java") || name.contains(".properties") || name.contains(".xml")) {
          readAndWrite(file);
          System.out.println(name + " has converted to utf8 ");
        }
      }
    }
  }

 
  private static boolean isValidFile(File dirFile)throwsIOException{
    if (dirFile.exists()) {
      System.out.println("file exist");
      return true;
    }
    if (dirFile.isDirectory()) {
      if (dirFile.isFile()) {
        System.out.println(dirFile.getCanonicalFile());
      }
      return true;
    }
    return false;
  }

  private static void readAndWrite(File file)throwsException{
    String content = FileUtils.readFileByEncode(file.getPath(), "GBK");
    FileUtils.writeByBufferedReader(file.getPath(), new String(content.getBytes("UTF-8"), "UTF-8"));
  }

  public static void main(String[] args)throwsException{
    //程序入口,制定src的path
    String path = "/Users/mac/Downloads/unit06_jdbc/src";
    transferFile(path, 1);
  }
}
public class FileUtils{
  public static void writeByBufferedReader(String path, String content){
    try {
      File file = new File(path);
      file.delete();
      if (!file.exists()) {
        file.createNewFile();
      }

      FileWriter fw = new FileWriter(file, false);
      BufferedWriter bw = new BufferedWriter(fw);
      bw.write(content);
      bw.flush();
      bw.close();

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public staticStringreadFileByEncode(String path, String chatSet)throwsException{
    InputStream input = new FileInputStream(path);
    InputStreamReader in = new InputStreamReader(input, chatSet);
    BufferedReader reader = new BufferedReader(in);
    StringBuffer sb = new StringBuffer();
    String line = reader.readLine();
    while (line != null) {
      sb.append(line);
      sb.append("\r\n");
      line = reader.readLine();
    }
    return sb.toString();
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# java  # GBK转为uft8  # java将GBK转为uft8  # 浅谈Java工程读取resources中资源文件路径的问题  # Eclipse 导出可执行Java工程/可执行Jar文件(包含第三方Jar包)  # 一名Java高级工程师需要学什么?  # 一个合格JAVA软件工程师应该具备什么  # JAVA如何获取工程下的文件  # 递归  # 是一个  # 成了  # 你有  # 给大家  # 写了  # 均可  # 想做  # 大家多多  # 批量转换  # 加载  # 目录下  # list  # int  # depth  # currentDepth  # dirFile  # File  # isValidFile  # fileList 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  Laravel如何使用Blade组件和插槽?(Component代码示例)  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  JavaScript如何实现错误处理_try...catch如何捕获异常?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  php485函数参数是什么意思_php485各参数详细说明【介绍】  nodejs redis 发布订阅机制封装实现方法及实例代码  如何用西部建站助手快速创建专业网站?  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  如何在景安云服务器上绑定域名并配置虚拟主机?  JavaScript实现Fly Bird小游戏  Laravel怎么在Controller之外的地方验证数据  Laravel集合Collection怎么用_Laravel集合常用函数详解  如何挑选优质建站一级代理提升网站排名?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何快速查询网站的真实建站时间?  Laravel如何与Inertia.js和Vue/React构建现代单页应用  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  SQL查询语句优化的实用方法总结  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  php 三元运算符实例详细介绍  三星网站视频制作教程下载,三星w23网页如何全屏?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  如何为不同团队 ID 动态生成多个“认领值班”按钮  *服务器网站为何频现安全漏洞?  网站制作企业,网站的banner和导航栏是指什么?  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  如何快速搭建个人网站并优化SEO?  如何用腾讯建站主机快速创建免费网站?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  Linux系统运维自动化项目教程_Ansible批量管理实战  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  浅析上传头像示例及其注意事项  油猴 教程,油猴搜脚本为什么会网页无法显示?  Python并发异常传播_错误处理解析【教程】  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  Laravel如何使用.env文件管理环境变量?(最佳实践)  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何在服务器上三步完成建站并提升流量?