`
zhuzi1982
  • 浏览: 4264 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

读取解决eclipse工程中中文乱码的一种方案

阅读更多
昨天因为svn更新时出错,导致了所有的包含中文的java文件出现乱码,用记事本读取中文显示正常,但用eclipse就显示错误,导致问题出现的原因是编码问题,于是写了一个java类,遍历文件夹里所有的java类,并且将其转换成utf-8编码。具体代码如下:


/**
 * 处理学习元乱码问题
 * 
 * @author 丁国柱  2012-11-22
 */
public class ParseFile2UFT8 {
	private static ArrayList<String> filelist = new ArrayList<String>();

	public static void main(String[] args) throws Exception {
		String filePath = "F:/program/Lcell/src";
		// getFiles(filePath);
		String fileName = "";
		List<String> fileList = getFiles(filePath);
		System.out.println("一共有" + fileList.size() + "个文件");
		for (int i = 0; i < fileList.size(); i++) {
			// convertFiles(fileList.get(i),);
			// System.out.println(fileList.get(i));
			// convertFiles(fileList.get(i).toString(),changeFilePath(fileList.get(i).toString()));
			fileName = fileList.get(i).toString();
			System.out.println("处理第" + i + 1 + "个文件:" + fileName);
			convertFiles(fileName, changeFilePath(fileName));

		}
		// System.out.println(changeFilePath("F:/program/Lcell/src/TestHellp.java"));

	}

	/*
	 * 通过递归得到某一路径下所有的目录及其文件
	 */
	static List<String> getFiles(String filePath) {
		File root = new File(filePath);
		File[] files = root.listFiles();
		for (File file : files) {
			if (file.isDirectory()) {
				/*
				 * 递归调用
				 */
				getFiles(file.getAbsolutePath());

			} else {
				// 只要后缀名为java的文件
				if (file.getAbsolutePath()
						.substring(file.getAbsolutePath().length() - 5,
								file.getAbsolutePath().length())
						.equals(".java")) {
					filelist.add(file.getAbsolutePath());
				}
			}
		}
		return filelist;
	}

	public static void convertFiles(String inputFilePath, String outputFilePath) {
		FileInputStream fis = null;
		FileOutputStream fos = null;
		try {
			fis = new FileInputStream(new File(inputFilePath));
			fos = new FileOutputStream(new File(outputFilePath));
			byte[] buffer = new byte[fis.available()];
			fis.read(buffer);

			String str = new String(buffer, "GBK");
			fos.write(str.getBytes("utf-8"));
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (fis != null) {
				try {
					fis.close();
				} catch (Exception e) {

				}
			}
			if (fos != null) {
				try {
					fos.close();
				} catch (Exception e) {
				}
			}
		}
	}

	/**
	 * 改变存储路径F:/program/Lcell/src/TestHellp.java
	 * ==>F:/program/Lcell/convert/TestHellp.java
	 * 
	 * @param filePath
	 * @return
	 */
	public static String changeFilePath(String filePath) {
		int index = filePath.lastIndexOf("\\src");
		String newFilePath = filePath.substring(0, index) + "_convert"
				+ filePath.substring(index, filePath.length());
		// if(File(newFilePath))
		File file = new File(newFilePath);
		if (!file.getParentFile().exists()) {
			System.out.println("目标文件所在路径不存在,准备创建:" + file.getParentFile()
					+ "目录");
			if (!file.getParentFile().mkdirs()) {
				System.out.println("创建目录文件所在的目录失败!");
			}
		}
		return newFilePath;
	}

	// 根据文件名判断是否utf-8编码
	public static boolean fileIsUTF8Encoding(FileInputStream in) {
		boolean isUtf8 = false;
		try {
			byte[] b = new byte[3];
			try {
				in.read(b);
				in.close();
				if (b[0] == -17 && b[1] == -69 && b[2] == -65) {
					// 是utf-8编码
					isUtf8 = true;
				}

			} catch (FileNotFoundException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return isUtf8;
	}

}

分享到:
评论

相关推荐

    eclipse下properties文件中文乱码的解决方案

    ### Eclipse下Properties文件中文乱码解决方案详析 在IT开发领域,尤其是使用Eclipse作为集成开发环境(IDE)的开发者,经常会遇到一个令人头疼的问题——Properties文件中的中文字符出现乱码。这一现象不仅影响...

    彻底解决中文乱码的问题

    本篇文章将深入探讨这个问题,并提供一种彻底解决中文乱码问题的方法。 首先,我们需要理解什么是乱码。乱码通常出现在字符编码不匹配的情况下,即数据存储或传输时采用的编码格式与读取或显示时使用的编码格式不...

    java读取文件中文乱码

    在Java编程中,读取包含中文字符的文件时可能会遇到乱码问题,这通常是由于编码格式不匹配导致的。要解决这个问题,我们需要理解文件的原始编码格式,并在Java代码中正确地设置字符集。以下是一些相关的知识点: 1....

    eclipse中class乱码GBK-UTF-8转换工具

    UTF-8则是一种广泛使用的Unicode编码,支持世界上几乎所有的字符集,包括GBK中的所有字符。在Eclipse中,如果你的源代码或者类文件(.class)是以GBK编码保存,而Eclipse默认配置为UTF-8,那么在打开或读取这些文件...

    java中文乱码问题处理方案.docx

    为解决中文乱码问题,历来有多种解决方案,但每种方案都有其优缺点。最传统的方法是通过String的字节码转换处理。这种方法要求开发者直接操作字节流,打破对象的封装性,虽然能解决问题,但在操作上不够方便,且容易...

    ajax提交中文乱码解决方法

    在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过JavaScript发起异步请求,与服务器进行数据交换,从而实现动态加载内容的效果。然而,...

    JSP与MySQL交互的中文乱码解决方案

    - **读取数据**:当从MySQL读取中文内容时,如果使用了StringConvert Bean的`GBtoISO()`和`ISOtoGB()`方法,可以解决部分乱码问题。但这种方法可能不适用于所有情况,特别是写入时出现的问题。 - **写入数据**:在...

    源代码中文乱码==转换为UTF8

    2. **UTF8编码**:UTF8(Unicode Transformation Format - 8 bit)是一种基于Unicode的编码方式,它可以表示Unicode字符集中所有字符。UTF8的一个显著特点是其变长特性,英文字符只占1个字节,而大部分汉字则占3个或...

    Java读取中文文件出现乱码解决过程.mht

    在Java编程中,读取中文文件时可能会遇到乱码问题,这是由于字符编码不匹配导致的。本篇文章将深入探讨这个问题,并提供解决方案。 首先,我们要理解什么是字符编码。字符编码是用来表示文本中字符的一种方式,常见...

    eclipse中文SVN插件

    Eclipse是一款广受欢迎的开源集成开发环境(IDE),在软件开发过程中,版本控制工具是非常重要的辅助工具,而Subversion(简称SVN)就是这样一种工具,它用于管理代码库,跟踪文件和目录的变化,并允许团队成员协作...

    一次性解决中文乱码问题

    本文将深入探讨中文乱码的成因、解决方案,并为初学者提供一些实用的建议,帮助你们一次性解决这个问题。 首先,我们需要理解什么是乱码。乱码通常发生在计算机系统处理字符编码不一致的情况下,即数据的输入、存储...

    eclipseAPI生成中文乱码处理

    本篇文章将详细探讨如何解决Eclipse API生成中文乱码的情况,并提供一系列解决方案。 #### 一、问题背景 在使用Eclipse进行Java项目开发时,可能会遇到中文显示乱码的情况。这种情况通常发生在读取文件或输出中文...

    Java Properties 解决中文乱码和顺序读写.docx

    确保IDE(如IntelliJ IDEA或Eclipse)设置文件编码为UTF-8,同时在读取Properties文件时,通过`InputStreamReader`指定正确的字符集,例如`UTF-8`,避免乱码出现。 例如,以下是一个简单的示例,演示如何读取包含...

    eclipse中自动修改资源文件解决中文问题

    在Eclipse中,插件可以扩展IDE的功能,提供定制化的解决方案。对于处理中文问题,我们可能需要寻找一个专门针对资源文件编码转换的插件,如"Character Encoding Manager",它允许用户设置统一的项目编码,并自动应用...

    解决开发中乱码方案

    ### 解决开发中乱码方案 #### 背景与问题描述 在Web开发过程中,中文乱码问题一直是困扰开发者的一大难题。特别是在处理用户输入、数据库读取等环节时,字符编码不一致很容易导致页面显示异常,使得用户体验大打...

    Servlet中的中文乱码问题

    本篇文章将深入探讨如何解决Servlet中的中文乱码问题,以及如何在GBK、UTF-8和ISO-8859-1之间做出合理的选择。 首先,我们需要了解字符编码的基本概念。GBK是中国大陆广泛使用的中文字符集,包含了大部分中文字符;...

    JSP中文乱码的产生原因及解决方案.docx

    在JSP开发中,中文乱码是一个常见的问题,它源于Java和JSP处理字符编码的方式。Java语言的核心和class文件基于Unicode,确保了其跨平台兼容性,但也为处理中文字符带来了一些挑战。中文乱码的产生主要有两个原因:一...

    hibernate的中文问题的解决方案

    - [JavaEye论坛帖子](http://forum.javaeye.com/viewtopic.php?t=5497)(虽然链接可能已失效,但该帖子在当时提供了一种可行的解决方案) 通过以上步骤,可以有效地解决Hibernate处理中文字符时出现的问题,确保...

    Java Web项目开发中的中文乱码问题与对策.pdf

    Java Web项目开发中,中文乱码问题是一个常见但棘手的困扰,主要涉及到字符编码和解码的过程。在计算机系统中,数据以二进制形式存储,中文字符需要经过编码转换为字节序列才能存储。编码是将字符转化为字节的过程,...

    pdfbox乱码问题解决 pdf打印 pdf预览

    此文件中包含我进行修改的源码地址,托管在github上,资源分定为10分,也算是对我努力的一种肯定,包含完整工程,我发现github上很多源码都是没有jar包的,我也不知道作者是什么心理,为什么就是不放完整工程,我放...

Global site tag (gtag.js) - Google Analytics