eclipe可设置代码文件字符集,比如utf-8。若遇到gbk编码的文件,显示中文时就会乱码,此类可以将文件转换成utf-8编码。
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import org.springframework.util.FileCopyUtils;
/**
* 文本文件字符编码转换器
*/
public class CharsetConverter {
private String srcDir;
private String destDir;
private FileFilter filter;
/**
* 构造器(对所有类型的文件做转换)
*
* @param srcDir
* 源文件所在目录
* @param destDir
* 转换后的文件存放目录
*/
public CharsetConverter(String srcDir, String destDir) {
this(srcDir, destDir, "*");
}
/**
* 构造器
*
* @param srcDir
* 源文件所在目录
* @param destDir
* 转换后的文件存放目录
* @param fileTypes
* 文件类型(根据后缀来判断)类别,逗号(<code>,</code>)分隔。<code>"*" </code>表示所有的类型
*/
public CharsetConverter(String srcDir, String destDir, String fileTypes) {
super();
this.srcDir = srcDir;
this.destDir = destDir;
this.filter = getFileFilter(Arrays.asList(fileTypes.toLowerCase()
.split(",")));
}
/**
* 取得文件类型过滤器
*/
private FileFilter getFileFilter(final List<String> fileTypes) {
return new FileFilter() {
String getType(File file) {
String name = file.getName();
return name.substring(name.lastIndexOf(".") + 1).toLowerCase();
}
@Override
public boolean accept(File file) {
if (file.isHidden())
return false;
return file.isDirectory() || fileTypes.contains(getType(file))
|| fileTypes.contains("*");
}
};
}
/**
* 执行转换
*
* @param fromCharset
* 原文件字符集
* @param toCharset
* 转换后的字符集
* @throws IOException
*/
public void convert(String fromCharset, String toCharset)
throws IOException {
this.convert(new File(srcDir), fromCharset, toCharset);
}
/**
* 转换单个文件
*
* @param fromCharset
* 原文件字符集
* @param toCharset
* 转换后的字符集
* @throws IOException
*/
private void convert(File file, String fromCharset, String toCharset)
throws IOException {
if (file.isDirectory()) {
for (File f : file.listFiles(this.filter)) {
convert(f, fromCharset, toCharset);
}
return;
}
System.out.println(file.getAbsolutePath());
String to = destDir + "/"
+ file.getAbsolutePath().substring(srcDir.length());
File dir = new File(to.substring(0, to.replaceAll("\\\\", "/")
.lastIndexOf("/")));
if (!dir.exists())
dir.mkdirs();
byte[] bytes = FileCopyUtils.copyToByteArray(file);
FileCopyUtils.copy(new String(bytes, fromCharset).getBytes(toCharset),
new File(to));
}
public static void main(String[] args) throws Exception {
if (args.length < 5) {
System.out
.println("Usage: java CharsetConverter <srcDir> <destDir> <fileTypes|*> <fromCharset> <toCharset>");
System.out
.println("e.g. java CharsetConverter i:/src i:/dest java,txt gbk utf-8");
// System.exit(0);
args = new String[] { "i:/src", "i:/dest", "java", "gbk", "utf-8" };
}
new CharsetConverter(args[0], args[1], args[2]).convert(args[3],
args[4]);
}
}
分享到:
相关推荐
这个类可能包含了检测输入数据的原始编码、验证转换过程中的字符集兼容性,或者在转换过程中防止乱码的出现等功能。 在实际应用中,字符编码问题可能导致乱码、数据丢失或者无法正确解析的问题。例如,从GBK编码的...
1. **Charset类**:Java的`java.nio.charset`包中的`Charset`类是字符编码的核心类,它可以用于获取所有可用的字符集,并进行字符编码和解码操作。例如,`Charset.forName("UTF-8")`可以获取UTF-8编码。 2. **...
这个类的功能可实现将数据从数据库中取出后转换、字符编码转换、大文本块处理(将字符集转成ISO)、字符类型转换,比如将String型变量转换成int型变量等操作,在实际应用中,这是个相当实用的字符串操作类。
5. `StandardCharsets`枚举:Java 7引入了`java.nio.charset.StandardCharsets`枚举,包含了常见的字符集常量,如`StandardCharsets.UTF_8`,这样可以更安全地使用字符集,避免因拼写错误引发的问题。 在`Code...
这个组件可能包含了将字符串从一种字符集(如UTF-8)转换为另一种字符集(如GBK)的功能,这对于处理不同地区或系统间的编码问题非常有用。 2. **取子字符串**: Java的`String`类提供了`substring()`方法来获取...
这个工具可能使用了一些开源的中文字符集转换库,如OpenCC,这是一个广泛使用的简繁转换库,提供了多种转换规则,包括“常用词简繁转换”、“全形半形转换”等,以满足不同的转换需求。使用这样的库可以确保转换的...
在英文字符集(如ASCII或Unicode)中,每个字母有两个形式:大写和小写。大写字母通常用于标题、缩略词或表示专有名词,而小写字母则常用于一般书写和单词拼写。在计算机程序中,区分大小写是至关重要的,因为"Hello...
为了处理这种情况,我们需要对文件进行编码检测,然后使用适当的编码进行读写,如使用`Charset`类进行字符集的识别和转换。 此外,对于批量处理大量文件的场景,可以编写Java程序实现自动化转换,利用Java强大的...
《java2实用教程》涵盖了Java语言的基础知识和一些高级特性,适合初学者系统学习Java编程。以下是书中各章节的知识点总结: 第一章:JAVA语言入门 1.1 JAVA的诞生:介绍了Java语言的历史背景,它是由Sun ...
### Java2实用教程知识点概述 #### 一、Java语言入门 **1.1 Java的诞生** - **背景**: Java 语言是由 Sun Microsystems 公司在 1995 年发布的,由 James Gosling 主导设计。 - **目的**: 设计之初是为了用于消费...
- `getBytes(Charset charset)`: 指定字符集获取字节数组。 17. **字符串反转** - `reverse()`: 反转字符串中的字符顺序。 18. **国际化与本地化** - `format(Locale locale, String format, Object... args)`:...
在Android中实现字符转换,通常会利用到Java或Kotlin中的Unicode字符集和转换库。Unicode是一个包含所有已知字符的编码标准,包含了简体和繁体中文的所有字符。通过查找特定的Unicode码点,我们可以实现字符间的转换...
Java Emoji转换工具是一种基于Java编程语言的实用程序,主要用于处理文本中的表情符号(Emoji),将它们转换成适合不同平台或环境的格式。在现代通信中,Emoji已经成为表达情感和简化交流的重要元素,但不同的操作...
### Java实用教程知识点详解 #### 第一章:Java语言入门 **1.1 Java的诞生** - **背景介绍**:Java是由Sun Microsystems公司于1995年推出的面向对象编程语言。 - **目的**:旨在解决C++语言中存在的问题,如内存...
例如,`convertEncoding()`函数可能使用`Charset`类进行字符集转换,`unescapeHTML()`可能使用`StringEscapeUtils`进行HTML实体解码。 4. **JSON处理**: JSON(JavaScript Object Notation)是一种轻量级的数据...
iTextPDF提供了`HtmlConverter`类,可以方便地将HTML字符串或URL转换为PDF。以下是一个简单的示例: ```java import com.itextpdf.html2pdf.HtmlConverter; import com.itextpdf.html2pdf.attach.ProcessorContext;...
Java语言提供了强大的I/O和字符集操作功能,可以方便地处理文件编码转换。主要涉及的类有`java.io.File`、`java.nio.file.Files`、`java.nio.charset.Charset`等。以下是一些关键步骤: 1. **读取文件**:使用`...
本文将深入探讨“文件编码格式批量转换工具”,重点讲解如何将文件从一种编码格式转换为UTF-8编码,以及涉及的字符集和Java编程语言的相关知识。 标题“文件编码格式批量转换工具.rar”表明这是一个可以处理多个...
此外,Java还有第三方库,如ICU4J,提供了更强大的字符集转换功能,可以处理更多复杂的转换需求,例如全角半角转换、简体繁体混合文本的处理等。 标签中的“源码”意味着这个项目可能包含了实现上述功能的Java源...