Java1.7是否使用不同的字符编码?

Java1.7是否使用不同的字符编码?,java,Java,我们正在将应用程序从Java1.6迁移到Java1.7。我们使用Java 1.7重新编译了代码,在编译时收到一个错误,这是由于一个字符引起的(anÓ) Java 1.7中是否有与字符相关的更改?我们的应用程序对传入的文件进行大量处理,然后将它们加载到数据库中,我希望确保当我们升级到Java 1.7时,从Java读取文件并将该内容写入数据库不会导致一些奇怪的字符转换 升级到1.7版时,我需要担心吗?如果是这样,如何获得与Java 1.6中相同的编码?发生错误的原因是您告诉Java编译器您的源代码是

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

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


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

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


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

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


您需要确保您的源代码是“Unicode干净的”,也就是说,您必须用其Unicode等价物替换任何扩展的ISO-8859-1字符。

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

JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF8

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

JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF8

看看更多的上下文会很有帮助。你到底是怎么编译的<代码>javac?还是日食?到底哪个角色比较麻烦?
Ó
?到底是哪个错误?其他的变音符号和“特殊”字符如
Ä
等等怎么样?源文件以什么字符编码保存?这个问题很难对文件处理产生影响,只要你在任何地方都明确提到字符编码,而不是依赖于平台默认编码,例如,使用
InputStreamReader
OutputStreamWriter
而不是
FileReader
FileWriter
。删除该字符并忘记。@RomanC:请停止在建议的编辑中使用斜体显示API/library/framework/product名称。使用javac和ant编译(注意,如果有帮助,这是Oracle的1.7)看看更多的上下文会很有帮助。你到底是怎么编译的<代码>javac?还是日食?到底哪个角色比较麻烦?
Ó
?到底是哪个错误?其他的变音符号和“特殊”字符如
Ä
等等怎么样?源文件以什么字符编码保存?这个问题很难对文件处理产生影响,只要你在任何地方都明确提到字符编码,而不是依赖于平台默认编码,例如,使用
InputStreamReader
OutputStreamWriter
而不是
FileReader
FileWriter
。删除该字符并忘记。@RomanC:请停止在建议的编辑中使用斜体显示API/library/framework/product名称。使用javac和ant编译(注意,如果有帮助,这是Oracle的1.7)