通常在Eclipse下,mac和windows编码是不一样的。如果含有中文java sources通常会出现乱码。

解决---小程序!

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset; public class CharEncodingExchange { private final static String SOURCE_ENCODING = "EUC-CN"; private final static String TARGET_ENCODING = "UTF-8"; private static String SOURCE_DIR = "/Users/pandans/Desktop/CoastalBank/src"; private static String TARGET_DIR = "/Users/pandans/Desktop/tmp"; /**
*
* @param args
*/ public static void main(String[] args) { // TODO Auto-generated method stub try { exchange(SOURCE_DIR); } catch (Exception e) { // TODO Auto-generated catch blockXj e.printStackTrace(); } } /**
*
* exchange the character encoding from srcDir to targetDir
*
*
*
* @param srcDir
*
* @param targetDir
*/ public static void exchange(String srcDir) { String absPath = ""; if (!srcDir.equals(SOURCE_DIR)) { absPath = srcDir.substring(SOURCE_DIR.length()); String targetDir = TARGET_DIR + absPath; File targetDirectory = new File(targetDir); if (targetDirectory.isDirectory() && !targetDirectory.exists()) { targetDirectory.mkdirs(); } } File sourceDirectory = new File(srcDir); if (sourceDirectory.exists()) { if (sourceDirectory.isFile()) { String targetFilePath = TARGET_DIR + absPath; try { fileEncodingExchange(sourceDirectory, targetFilePath); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { File[] childs = sourceDirectory.listFiles(); for (File child : childs) exchange(child.getPath()); } } } private static void fileEncodingExchange(File infile, String targetAbsFilePath) throws IOException { FileInputStream fin = null; FileOutputStream fout = null; FileChannel fcin = null; FileChannel fcout = null; System.out.println(infile + " " + targetAbsFilePath); String tmpTargetPath = targetAbsFilePath.substring(0, targetAbsFilePath .lastIndexOf(File.separator)); File tmpTargetDir = new File(tmpTargetPath); if (!tmpTargetDir.exists()) tmpTargetDir.mkdirs(); try { fin = new FileInputStream(infile); fout = new FileOutputStream(targetAbsFilePath); fcin = fin.getChannel(); fcout = fout.getChannel(); ByteBuffer buffer = ByteBuffer.allocateDirect(1024); while (true) { buffer.clear(); int r = fcin.read(buffer); if (r == -1) { break; } buffer.flip(); String encoding = System.getProperty("file.encoding"); fcout.write(ByteBuffer.wrap(Charset.forName(encoding).decode( buffer).toString().getBytes(TARGET_ENCODING))); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (fin != null) { fin.close(); } if (fcin != null) { fcin.close(); } if (fout != null) fout.close(); if (fcout != null) fcout.close(); } } }

自己修改路径。

命令行下运行

编译。

javac CharEncodingExchange.java

运行:

java CharEncodingExchange

先把工程编码变成想要的编码。这里是UTF-8

把tmp的文件覆盖到工程src下。

--------------Eclipse修改默认编码---------------

UTF-8

这个修改了整个工程会自动变。

UTF-8

Eclipse编码问题的更多相关文章

  1. eclipse 编码设置

    eclipse 编码设置 浏览:2840 | 更新:2013-12-31 10:07 一般Java文件编码格式是UTF-8的.以下以默认GBK改为UTF-8为例. 1.改变整个工作空间的编码格式,这样 ...

  2. Eclipse编码规范——Code Templates设置

    Eclipse编码规范——Code Templates设置 Eclipse编码规范主要包括三个方面:设置Code Templates.Eclipse formatter.Checkstyle, 本篇主 ...

  3. 设置Eclipse编码方式

    1.windows->Preferences...打开"首选项"对话框,左侧导航树,导航到 general->Workspace,右侧Text file encodin ...

  4. Eclipse编码设置(转载)

    来源:http://e-ant.javaeye.com/blog/177579 如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码.然而,E ...

  5. eclipse color themes 让eclipse编码好看点

    http://eclipsecolorthemes.org/ 就是这个,很好用的! 安装后需要重启Eclipse.重启后打开Window->Preferences->General-> ...

  6. eclipse 编码改成utf-8

    Eclipse的编码格式是系统默认 修改为utf-8,点击Apply and Close 然后项目的编码格式会统一默认utf-8 当然也可以选择other,改成GBK.

  7. eclipse 编码设置【转】

    一般Java文件编码格式是UTF-8的.以下以默认GBK改为UTF-8为例. 1.改变整个工作空间的编码格式,这样以后新建的文件也是新设置的编码格式. eclipse->window->p ...

  8. eclipse编码转换

    一般Java文件编码格式是UTF-8的.以下以默认GBK改为UTF-8为例. 1.改变整个工作空间的编码格式,这样以后新建的文件也是新设置的编码格式.     eclipse->window-& ...

  9. eclipse编码设置

随机推荐

  1. 2013 ACM 通化邀请赛 A. Tutor

    A. Tutor Description Lilin was a student of Tonghua Normal University. She is studying at University ...

  2. cocos2d-x中false,setSwallowTouches,stopPropagation的区别

    研究到cocos2d-x触摸这一块了,3.0和2.0相比已经有了很大的不同,使用更加方便和容易理解了. 直接进入正题,解释下,标题中3个用法的区别 通常来说,应用程序中更多使用的是单点触摸,为了简化单 ...

  3. ubuntu设置vim语法高亮显示和自动缩进

    转自:http://nichael1983.blog.163.com/blog/static/114969433201002711850604/ 今天自己学习使用vim,当我在vim中输入程序时,默认 ...

  4. PL/0与Pascal-S编译器程序详细注释

    学校编译课的作业之一,要求阅读两个较为简单的编译器的代码并做注释, 个人感觉是一次挺有意义的锻炼, 将自己的心得分享出来与一同在进步的同学们分享. 今后有时间再做进一步的更新和总结,其中可能有不少错误 ...

  5. [闲谈] 有经验的程序员用Google用得多么?

    关于程序员有没有必要记一些API什么的讨论有很多,我个人觉得能Google到的就没必要刻意去记,可以简单的做个笔记,需要用的时候查一下就好了.真正有必要记的东西,用得多了自然也就能记住了. 文章不难, ...

  6. oracle限制用户连接数

    查看是否启用限制配置 SQL> show parameter resource_limit; 或者 select * from v$parameterwhere name = 'resource ...

  7. 使用ngin的静态文件下载

    1,主配置文件nginx.xml #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error. ...

  8. js种的循环语句

    //js种的循环语句 //while与do while的区别是while是满足条件后才执行 //do while是不管满不满足条件都会执行一次 //for 循环与while,do while相比循环结 ...

  9. Java 并发编程实战 摘要

    第一部分小结 并发技巧清单: 可变状态是至关重要的(It's the mutable state ,stupid). 所有的并发问题结为如何协调对并发状态的访问,可变状态越少,就越容易确保线程安全性. ...

  10. ASP.NET内置对象一

    ASP.NET提供了大量的对象类库,在这些类库中包含了许多封装好的内置对象,我们只需要直接使用这些对象的方法和属性,就能简单快速地完成很多的功能.Request对象.Response对象和Serve对 ...