繁体   English   中英

Eclipse启动和ant启动以不同的编码生成文件

[英]Eclipse launch and ant launch produce file in different encoding

我有一个简单的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 ...我还能尝试什么?

我做错了什么......

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

所以修复是以下之一:

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

  • 更改您的代码以使用FileWriter,OutputStreamWriter或任何以编码名称或Charset作为参数的重载。 并确保您的代码与它提供的参数一致。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM