10

我们正在将我们的应用程序从 Java 1.6 迁移到 Java 1.7。我们使用 Java 1.7 重新编译了代码,并在编译时收到了一个错误,这是由于一个字符 (an Ó)。

Java 1.7 中是否有与字符相关的变化?我们的应用程序对传入文件进行了大量处理,然后将它们加载到数据库中,我想确保当我们升级到 Java 1.7 时,从 java 读取文件并将该内容写入数据库不会导致一些奇数字符转换。

升级到 1.7 时我需要担心吗?如果是这样,我如何获得与 Java 1.6 中相同的编码?

4

2 回答 2

4

发生错误是因为您告诉 Java 编译器您的源代码是 UTF-8 编码的,但它仍然包含一些 ISO-8859-1 扩展字符。我最近不得不修复从 1.5 迁移到 1.6 的代码库中的类似错误。我相信 Java 7 对 UTF-8 编码比以前的版本更严格,并且会在以前默默接受不正确编码的地方发出错误。

您需要确保您的源代码是“Unicode-clean”,也就是说,您必须将任何扩展的 ISO-8859-1 字符替换为其 Unicode 等效字符。

于 2012-11-15T20:52:05.650 回答
0

我在 Windows 上遇到了这个问题,发现 1.7 的默认编码是CP-1252. 通过设置为以下环境变量,我能够获得干净的编译...

JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF8
于 2013-04-04T15:20:27.447 回答