是什么让Ant在Eclipse中使用UTF-8而不是我的系统默认Cp1252执行'javac'?

cod*_*Les 8 java eclipse ant encoding

上周我一直试图弄清楚为什么一些流解码我新采用的应用程序正在做的是给我一些主要的编码问题.最后我发现问题在于,使用编码UTF-8而不是系统默认值CP1252,使用Ant构建并部署到服务器的JAR/WAR正在使用javac任务进行编译.

这似乎主要是由于这些特殊字符有许多硬编码字符串/字符.

通过以下任一步骤可轻松解决此问题:

  • 将eclipse项目的编码更改为UTF-8以匹配服务器上的字节代码
  • 将javac任务的编码设置为CP1252以构建WAR文件以匹配客户端字节代码
  • 奇怪的是,只需从命令提示符运行Ant 而不指定任何编码.

那么为什么Eclipse中的Ant会改为UTF-8?这是可配置的吗?我在哪里配置它?

系统

  • Windows XP
  • Eclipse 3.5
  • Ant 1.7.1
  • Java 1.6.0_11

McD*_*ell 6

从Eclipse运行的Ant,使用所有相同的版本(除了我有Java 1.6.0_15)将我的Java源文件视为Windows-1252.我的工作区和项目使用默认设置.

UTF-8匹配服务器上的字节代码

我不确定你的意思 - 你的意思是源文件的编码,当然.字节码是一组结构化的指令; 内置于类文件中的字符串文字始终为UTF-8.


我会使用Unicode转义序列使我的文件更加编码无关.您可以使用native2asciijava.nio.charset API 等工具来帮助解决这个问题.