项目开发中难免出现编码问题,网上查了一个eclipse插件com.lifesting.tool.encoding,不知道什么原因把我项目弄的一片混乱。
痛定思痛,自己写了一个,只要在项目中调用并运行一下Transcoding类就可以了,会自动把项目编码转换成指定的编码,同时会备份项目文件
自动检测编码用的是网上的BytesEncodingDetect类,觉得检测的准确度还是可以的,欢迎大家测试或使用
Transcoding类:
public class Transcoding {
private BytesEncodingDetect encode = new BytesEncodingDetect();
private String projectPath = System.getProperty("user.dir");// 获取项目目录
private File tempPath = null;// 转码备份区,用来备份,注意:每次使用前会自动清空
private String suf = null;
private String newCharset = null;
public Transcoding() {
// 针对windows目录,linux请自行修改
String proPath = projectPath.substring(projectPath.lastIndexOf("\\") + 1);
String temp_path = "D:/备份/" + proPath;
tempPath = new File(temp_path);// 转码备份区,可自行修改
if (!tempPath.exists()) {
tempPath.mkdirs();
} else {
delete(tempPath);// 注意:每次使用前会自动清空
}
}
/**
* 把当前项目复制一份到转码备份区
*/
private void backUp(File srcPath, File dstPath) {
if (srcPath.isDirectory()) {
if (!dstPath.exists()) {
dstPath.mkdirs();
}
String files[] = srcPath.list();
for (int i = 0; i < files.length; i++) {
backUp(new File(srcPath, files[i]), new File(dstPath, files[i]));
}
} else {
if (!srcPath.exists()) {
System.out.println("File or directory does not exist.");
System.exit(0);
} else {
try {
InputStream in = new FileInputStream(srcPath);
OutputStream out = new FileOutputStream(dstPath);
byte[] b = new byte[1024];
int len = 0;
while ((len = in.read(b)) != -1) {
out.write(b, 0, len);
}
in.close();
out.close();
} catch (Exception e) {
e.printStackTrace();// 一旦出错,根据信息自己找原因吧
System.out.println(srcPath.getAbsolutePath() + " " + dstPath.getAbsolutePath());
}
}
}
}
/**
* 用转码备份区文件转码后覆盖项目
*/
private void convert(File srcPath, File dstPath) {
if (srcPath.isDirectory()) {
if (!dstPath.exists()) {
dstPath.mkdirs();
}
String files[] = srcPath.list();
for (int i = 0; i < files.length; i++) {
convert(new File(srcPath, files[i]), new File(dstPath, files[i]));
}
} else {
if (!srcPath.exists()) {
System.out.println("File or directory does not exist.");
System.exit(0);
} else {
//只转码指定后缀的文件
if (!srcPath.getName().toLowerCase().endsWith(suf)) {
return;
}
try {
// 获取文件编码
String charset = BytesEncodingDetect.javaname[encode.detectEncoding(srcPath)];
//编码相同,无需转码
if (charset.equalsIgnoreCase(newCharset)) {
return;
}
InputStream in = new FileInputStream(srcPath);
OutputStream out = new FileOutputStream(dstPath, false);
BufferedReader br = new BufferedReader(new InputStreamReader(in, charset));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out, newCharset));
while (br.ready()) {
bw.append(br.readLine());
bw.newLine();
}
br.close();
bw.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println(srcPath.getAbsolutePath() + " " + dstPath.getAbsolutePath());
}
}
}
}
/**
* 删除目录
*/
private void delete(File file) {
if (file.isDirectory()) {
File[] list = file.listFiles();
for (File f : list) {
delete(f);
}
file.delete();
} else {
file.delete();
}
}
/**
* 对当前项目进行转码,会把当前项目覆盖
* suf:规定要转码的文件后缀;charset:规定要转的编码
*/
public void encoding(String suf, String charset) {
this.suf = suf;
newCharset = charset;
backUp(new File(projectPath), tempPath);
convert(tempPath, new File(projectPath));
System.out.println("encoding successfully!");
}
/**
* @param args
*/
public static void main(String[] args) {
new Transcoding().encoding("java", "utf-8");
}
}
分享到:
相关推荐
附件中:FileCharsetConverter.java 此文件可以实现两个编码的相互转换 FileCharsetConverter.convert( "gbk/DispatcherHandler.java", "GBK", "UTF-8", new FilenameFilter() { public boolean accept(File...
`JAVA 转换字符编码工具`可能是一个用于处理字符编码转换的Java程序,旨在帮助开发者解决不同编码格式之间转换的问题。这篇博文链接(虽然没有提供具体内容)可能详细介绍了这个工具的实现原理和使用方法。 在Java...
编码转换的类 含源代码, 适合编码转换时候使用 默认转换为UTF-8 可以转换成别的
本篇文章将深入探讨“Java文件编码转换”这一主题,以及如何利用Java进行文件编码的转换,解决在处理文本文件时可能出现的乱码问题。 首先,我们要理解什么是字符编码。字符编码是用来表示文本的一种规则,常见的有...
总的来说,这个工具解决了开发环境中由于源代码编码不一致带来的问题,通过自动化检测和转换,确保了代码的可读性和跨平台兼容性,对于维护大型项目或整合多个代码库尤其有价值。了解并熟练使用这样的工具,对于提升...
这是编码批量转换的工具,有java环境的直接运行就好 ,主要是用来转换文件的编码,比如一个eclipse的默认编码是GBK,另一个eclipse的编码是UTF-8,把GBK的项目拿到utf-8的eclipse去运行,中文肯定乱码,这时需要把...
批量转换文件编码 超级批量编码转换 批量转换编码 编码批量转换工具 批量转换txt编码 linux 批量转换编码 编码格式批量转换 php 字符编码转换 字符编码转换 java 字符编码转换
2,文件编码自动识别,所以使用的时候不用提供原文件的编码;识别不了不会转换,保证项目文件的安全 3,支持utf-8-bom编码 4,兼容Linux & Windows & Mac系统 5,不用安装,只要机器有JDK就可以使用 需要源码的请...
测试使用说明: 1。将 字符集编码格式为 GB2312 的文件 test0.java,test...使用本工具可以对 Linux 下文件的字符集编码格式进行批量转换。只需适当配置一下,可以批量处理各种文件格式的文件,如 *.txt,*.java 等等。
在Java编程环境中,开发一个视频转换工具类是一个高级任务,涉及到多媒体处理和文件I/O操作。这个"java视频转换工具类"显然提供了这样的功能,能够将视频文件转换为不同的格式,如mp4、ogg和flv等。这些格式在互联网...
13751069146 Saro Modem 短信测试.txt Java Comm API编程指南....关于java使用javacomm20.doc 常见的进制转换方法.doc 浅谈Java串行端口技术协议.doc 短信 AT 命令参考.doc 短信PDU编码解码.doc 通过串口收发短消息.doc
Java字符串编码查询及转换,可将常用的一些编码格式转换成utf-8
综上所述,这个项目涵盖了Java编程中处理Word文档的核心技术,并涉及到文件编码识别和中文转换,对于进行文档操作的Java开发者来说具有很高的参考价值。通过理解和应用这些知识点,开发者可以构建自己的文档处理系统...
`StringUtils.java`可能是用来处理字符串操作的辅助类,例如转换二进制数据到Base64编码,这对于在不同平台间交换密钥和加密数据非常有用。Base64是一种将二进制数据编码为ASCII字符串的常见方法,便于在网络传输中...
Android NDK(Native Development Kit)提供了一种方法来实现这样的编码转换,这就是使用Iconv库。Iconv是一个广泛使用的字符集转换工具,它允许在多种字符编码之间进行转换,包括Unicode、GBK和UTF-8。 Iconv在C/...
这段代码首先定义了一个字符串`plainText`,然后使用`Base64.getEncoder().encode()`进行编码,编码后的结果以字节数组形式保存,再转换回字符串打印出来。接着,通过`Base64.getDecoder().decode()`对编码后的字节...
当我们循环遍历文件进行操作的时候可能遇到各种各样的文件编码格式,如果不知道当前循环的文件格式的话,将会遇到各种各样的问题,...使用java动态识别文件编码EncodingDetect.java这个工具类以后就变得异常简单了!
利用 Kettle 的 API 运用 Java 代码完成数据转换到 Excel 和数据库源码 Kettle 是一个开源的 ETL 工具,纯 Java 编写,绿色无需安装,数据抽取高效稳定。Kettle 中有两种脚本文件,transformation 和 job,...
在Java中,可以使用`String`类的方法来实现不同编码之间的转换。具体来说: - `getBytes(String charsetName)` 方法用于将字符串转换为特定编码的字节数组。 - `new String(byte[], String charsetName)` 方法用于...
腾讯 Java 编码规范是腾讯集团管理标准的一部分,旨在确保公司项目代码的易维护性和编码安全性。该规范涵盖了 Java 编码风格、文件组织、代码风格、注释、命名、声明、异常、习惯等方面。 一、文件组织 * 文件注释...