`
zh_harry
  • 浏览: 102460 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
877aca81-daac-33c8-8bf9-3a886cebc6c3
自己动手写java 框架
浏览量:28412
社区版块
存档分类
最新评论

疯子解决eclipse 编码问题的小工具

    博客分类:
  • JAVA
阅读更多
eclipse 默认为中文编码为gbk,当用gbk环境写的代码,其物理文件的编码为gbk.即使用eclipse 改为utf-8其物理文件的编码仍不变,所以通过以下代码生成。


package com.sparrow.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import com.sparrow.constant.COMMON;
import com.sparrow.core.Log;

public class ConvertEncoding {
	private static boolean isTest = true;
	private static String sourceEncoding = "gb2312";
	private static String descEncoding = "UTF-8";

	/**
	 * @author zlz
	 * 
	 * @time 2013-7-16上午10:26:40
	 * @param args
	 */
	public static void main(String[] args) {

		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		String rootPath = null;
		String yn = null;
		System.out.println("请输入要转换的路径");
		try {
			rootPath = bf.readLine();
		} catch (IOException e) {
		}

		Convert(rootPath);
		System.out.println("请输入文件的当前编码,回车默认为gbk");
		try {
			String tempEncoding = bf.readLine();
			if (!"".equals(tempEncoding)) {
				sourceEncoding = bf.readLine();
			}
		} catch (IOException e) {
		}

		System.out.println("请输入目标文件编码,回车默认为utf-8");
		try {
			String tempEncoding = bf.readLine();
			if (!"".equals(tempEncoding)) {
				descEncoding = bf.readLine();
			}
		} catch (IOException e) {
		}

		System.out.println("立即生成吗?Y/N");

		try {
			yn = bf.readLine();
		} catch (IOException e) {
		}

		if (yn.toLowerCase().equals("y")) {
			isTest = false;
			Convert(rootPath);
			System.out.println("ending");
		}
	}

	public static void Convert(String path) {
		File file = new File(path);
		File[] files = file.listFiles();
		for (File f : files) {
			if (f.isDirectory() && !f.isHidden()) {
				Convert(f.getPath());
			} else {
				String fileName = f.getPath();
				String sourceText = readFileContent(fileName, sourceEncoding);
				if (fileName.endsWith(".java")) {
					if (isTest) {
						System.out.println(sourceText);
					} else {
						writeFile(fileName, sourceText, descEncoding);
						System.out.println(fileName + " is encoded");
					}
				}
			}
		}
	}

	/**
	 * 以行为单位读取文件,常用于读面向行的格式化文件
	 */
	public static String readFileContent(String fileName, String charset) {
		if (StringUtil.isNullOrEmpty(charset)) {
			charset = "UTF-8";
		}
		File file = new File(fileName);
		BufferedReader reader = null;
		StringBuffer sb = new StringBuffer();
		try {
			reader = new BufferedReader(new InputStreamReader(
					new FileInputStream(file), charset));
			String tempString = null;
			while ((tempString = reader.readLine()) != null) {
				sb.append(tempString);
				sb.append(COMMON.ENTER_TEXT);
			}
			reader.close();
		} catch (IOException e) {
			Log.getInstance().error(e);
		} finally {
			if (reader != null) {
				try {
					reader.close();
				} catch (IOException e1) {
				}
			}
		}
		return sb.toString();
	}

	public static boolean writeFile(String filePath, String s, String charset) {
		OutputStreamWriter osw = null;
		try {
			osw = new OutputStreamWriter(new FileOutputStream(filePath),
					charset);
			osw.write(s, 0, s.length());
			osw.flush();
			return true;
		} catch (Exception e) {
			Log.getInstance().error(e);
			return false;
		} finally {
			if (osw != null) {
				try {
					osw.close();
				} catch (IOException e) {
				}
			}
		}
	}

}

1
1
分享到:
评论
4 楼 zh_harry 2013-07-29  
loloku 写道
zh_harry 写道
这个工具是为编码不统一的情况开发的,如果编码统一的话就不用转码了,一开始调成UTF-8是标准的流程,但有些老项目或其他公司的项目会遇到这种情况,还有有些人没有在一开始配成UTF-8,以后再改真的很麻烦,这也是eclipse的不足吧,它应该支持!

兄弟,你说的是对的,按照你的想法,这个可以解决一些编码问题,很高兴能看到这样的文章

这个问题确实很头疼,真正遇到过的才懂的。
3 楼 loloku 2013-07-29  
zh_harry 写道
这个工具是为编码不统一的情况开发的,如果编码统一的话就不用转码了,一开始调成UTF-8是标准的流程,但有些老项目或其他公司的项目会遇到这种情况,还有有些人没有在一开始配成UTF-8,以后再改真的很麻烦,这也是eclipse的不足吧,它应该支持!

兄弟,你说的是对的,按照你的想法,这个可以解决一些编码问题,很高兴能看到这样的文章
2 楼 zh_harry 2013-07-21  
这个工具是为编码不统一的情况开发的,如果编码统一的话就不用转码了,一开始调成UTF-8是标准的流程,但有些老项目或其他公司的项目会遇到这种情况,还有有些人没有在一开始配成UTF-8,以后再改真的很麻烦,这也是eclipse的不足吧,它应该支持!
1 楼 loloku 2013-07-21  
对你的贡献表示支持,但是同时我有个疑问,为什么不在一开始的时候就把GBK调成UTF-8?

相关推荐

    疯子手机apk卸载工具

    疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机...

    疯子ftp上传工具传送数据到服务器2.0.zip

    疯子ftp上传工具传送数据到服务器 ftp上传工具 ftp服务器上传 ftp客户端 ftp服务器客户端 2.0新功能 密码加密 在线更新 更新缓存错误

    疯子ftp上传工具源码传送数据到服务器源码版.rar

    在这个"疯子ftp上传工具源码传送数据到服务器源码版.rar"压缩包中,包含的源码可能是一个实现了FTP协议的上传工具,允许用户将本地文件上传至远程服务器。 FTP上传工具的核心功能通常包括以下部分: 1. **连接建立...

    疯子锁IE插件源码程序演示效果

    【标签】"疯子锁ie插件,锁ie,"再次确认了主要关注点,即该插件是针对IE浏览器的锁定解决方案。 【压缩包子文件的文件名称列表】中的"疯子锁IE插件演示效果.exe"表明,这是一个可执行文件,用于展示疯子锁IE插件的...

    疯子CMS_轻简杰奇小说系统.zip

    总而言之,疯子CMS提供了一个全面的解决方案,帮助运营者快速构建一个功能完备、易于维护的小说网站,满足不同用户群体的需求。其轻量级的特性使得它在性能和可扩展性之间找到了平衡,是初入小说网站运营领域者的...

    疯子苹果助手 v1.0.1.318.zip

    【疯子苹果助手 v1.0.1.318.zip】是一款专为苹果设备用户设计的应用下载平台,它的核心功能在于提供一个无需越狱就能安装各种应用的解决方案。这款软件打破了传统苹果用户必须通过App Store进行应用安装的限制,为...

    手机助手 疯子助手

    疯子助手是一款为苹果设备用户提供应用下载和游戏破解的软件,疯子助手里提供了海量不闪退应用和近千款极高有效度的... 疯子助手完美支持不越狱的iPhone和iPad等iOS设备,是一款下载安装和管理软件、游戏、应用的工具

    疯子ftp上传工具传送数据到服务器2.0.rar

    疯子ftp上传工具传送数据到服务器 ftp上传工具 ftp服务器上传 ftp客户端 ftp服务器客户端 2.0新功能 密码加密 在线更新

    eclipse-jee-neon-2-win32-x86_64

    eclipse-jee-neon-2-win32-x86_64,里面是下载地址.

    疯子页面采集器 v4.0

    "疯子页面采集器 v4.0" 是一款专门针对网页数据采集的高效工具,它设计的目的是为了帮助用户从互联网上抓取并处理各种类型的信息,如文字、图片等。这款软件尤其适用于那些需要大量网页信息进行分析、研究或者自动化...

    Eclipse3.2和VE插件安装实战攻略.doc

    请注意,安装过程中可能遇到的任何问题,都可通过查阅Eclipse官方文档或社区论坛寻求解决方案。此外,不断更新和维护你的开发环境,以确保能够利用最新技术和功能,是成为一名高效开发者的关键。

    swt设计器for_Eclipse4.5

    这个"swt设计器for_Eclipse4.5"压缩包,正是为Eclipse Mars提供SWT界面设计功能的工具。 在使用这个插件时,首先需要解压缩文件,然后将其中的资源复制到Eclipse的对应目录。"artifacts.xml"文件可能包含了插件的元...

    eclipse中Maven相关配置

    eclipse中maven相关配置 可以参考此文档来进行相关配置

    DELPHI 的仿QQ疯子 不完全

    总之,DELPHI的仿QQ疯子项目展示了如何利用DELPHI的强大功能来开发桌面应用程序,同时也揭示了在实现类似QQ疯子这样的即时通讯软件时可能面临的挑战和解决方案。通过不断学习和实践,开发者可以逐步提升自己的技能,...

    电脑疯子GHOST-WIN7-SP1旗舰版(64位).doc编程资料

    电脑疯子GHOST-WIN7-SP1旗舰版(64位).doc编程资料

    eclipse的安装使用,适用于Win10

    Eclipse是一款广泛使用的开源集成开发环境(IDE),尤其在Java编程领域中占据着重要的地位。本文将详细介绍如何在Windows 10系统上安装并使用Eclipse。 由于Eclipse是一个免安装的应用程序,我们只需将其解压缩到你...

    红-小工具.rar

    标题中的“红-小工具.rar”可能是指一个压缩文件,其中包含一款名为“红绿小工具”的实用程序。根据描述,这是一款轻量级的截图和图像处理软件,旨在提供简便快捷的屏幕捕获和编辑功能。这款软件具有以下几个关键...

    疯子扫描器

    【疯子扫描器】是一款专为IT专业人士设计的高级工具,其主要功能是针对特定IP地址范围内的机器进行文件内容的深度扫描。这款扫描器允许用户自定义扫描目标,以便在网络安全维护、系统审计或者数据恢复等场景下,快速...

    极速复制小工具

    "极速复制小工具"是一款专为提升文件复制效率而设计的应用程序,它的核心特性在于显著提高了数据传输的速度,相比传统的Windows文件复制功能,其速度可以提升60%以上。这样的性能提升对于处理大量数据或者频繁进行...

    Sudoku for Eclipse:一个免费的开源数独游戏,适合新手上瘾者-开源

    数独游戏。 S4E会生成无尽的新网格,并可以帮助您解决它们。 在较小或较大的网格上玩数字,字母或图像,在轻松或棘手的级别上玩...... 对于Eclipse疯子,它可以作为Eclipse的插件使用。 它是纯Java,当然是免费的。

Global site tag (gtag.js) - Google Analytics