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

标签 java eclipse encoding ant

上周我一直在试图弄清楚为什么我新采用的应用程序正在做的一些流解码给我带来了一些主要的编码问题。最后我发现问题在于使用 Ant 构建并部署到服务器的 JAR/WAR 是使用编码 UTF-8 而不是系统默认值 CP1252 的 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

最佳答案

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

UTF-8 to match the byte code on the server

我不确定您的意思 - 您肯定是指源文件的编码。字节码是一组结构化的指令;类文件中内置的字符串文字是 always UTF-8 .


我会使用 Unicode escape sequences使我的文件与编码无关。您可以使用 native2ascii 等工具或 java.nio.charset API 来帮助解决这个问题。

关于java - 什么会使 Ant 在 Eclipse 中使用 UTF-8 而不是我的系统默认 Cp1252 执行 'javac'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291021/

相关文章:

java - JUnit 测试期间重复的 log4j 输出

java - Spring MVC 项目在 Eclipse 中部署到 Tomcat 时缺少图像和样式

encoding - Coldfusion 11 的 CFdirectory,文件名中的非 ascii 字符问题

java - 使用 ArrayList 和循环计算文本文件中的标点符号无法正常工作,如何解决?

java - 在云环境中创建的单例对象

java - 找不到属性文件 ReloadableResourceBundleMessageSource 错误

python - 使用 Python 提取文件名中包含无效字符的文件

java - Android Google 登录失败 com.google.android.gms.common.api.ApiException : 12500

android - 无法将 Eclipse 项目导入 Android Studio

java - Maven java项目中文件的源编码