[英]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.