【问题标题】:Eclipse launch and ant launch produce file in different encodingEclipse 启动和 ant 启动以不同的编码生成文件
【发布时间】:2012-09-04 15:34:49
【问题描述】:

我有一个简单的 Java 项目。我确实使用 Eclipse 4.2 编写代码。我也使用 ant 来构建和启动我的应用程序。我的启动结果是一个文件。我确实读取了一个输入文件并生成了输出文件。
问题是:我得到不同编码的结果。当我通过 Eclipse 启动应用程序时,我会以一种编码方式获得输出文件。当我使用 ant 运行相同的应用程序时,我会得到其他编码的结果输出文件。 Eclipse 和 ant 使用相同的 jdk 构建和运行应用程序... 我做错了什么...?

我认为问题出在其他地方。请查看我的 build.xml 的一部分:

<target name="compile" depends="init">
    <javac destdir="${bin.dir}" classpathref="project.classpath"
                source="1.7"
                target="1.7"
                debug="yes"
                encoding="UTF-8"
                srcdir="${src.dir}">
    </javac>
    <copy todir="${bin.dir}" >
        <fileset dir="${src.dir}" excludes="**/*.java" />
    </copy> 
</target>

如您所见,指定了编码。源文件实际上是 UTF-8 格式。

这是启动主类的代码:

<target name="prepare_inserts" depends="dist" description="Run preparation of SQL INSERT statements.">
    <java classname="${main.class}" fork="true">
         <classpath>
            <path refid="project.classpath" />
            <pathelement location="${dist.dir}/xBankImportDWHTestData-${DSTAMP}.jar" />
          </classpath>
    </java>
</target>

如果我运行这个目标,我会得到错误编码的结果文件。 如果我确实从 Eclipse 运行此文件(右键单击 java 文件 -> 运行为 .. -> Java 类) 一切正常。 我确实在 Eclipse 项目属性中将编码设置为 UTF-8 ...... 我还能尝试什么?

【问题讨论】:

  • 您可能没有明确指定应该使用什么编码,因此使用了默认编码,这可能因您运行程序的方式而异。你能告诉我们你的代码吗?

标签: java file ant encoding


【解决方案1】:

我做错了什么...

你做错的是依赖默认编码。这取决于启动应用程序的环境。使用 Ant,您最有可能获得 OS(或 shell)默认编码。对于 Eclipse,默认编码由 Eclipse 首选项和/或启动器配置确定。 (在启动器配置的“通用”选项卡中查看优先设置。)

所以修复是以下之一:

  • 确保默认编码相同;例如通过更改应用程序的 Eclipse 启动配置。

  • 更改您的代码以使用 FileWriter、OutputStreamWriter 或任何将编码名称或 Charset 作为参数的重载。并确保您的代码在提供的参数方面保持一致。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-24
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 2010-12-14
    相关资源
    最近更新 更多