上周我一直在试图弄清楚为什么我新采用的应用程序正在做的一些流解码给我带来了一些主要的编码问题。最后我发现问题在于使用 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/