解释以下Java / Groovy行为

时间:2016-12-09 09:31:30

标签: java groovy character-encoding

代码:

public class Main {
    public static void main(String[] args) {
        System.out.println("测试");
    }
}

情景1:
文件名: Main.groovy
运行方式:Groovy脚本

输出: 测试

情景2:
文件名: Main.groovy
运行方式:Java Application

输出: ??

情景3:
文件名: Main.java
运行方式:Java Application

输出:测试

编辑1

环境
  - Eclipse 4.2.1
  - Groovy 2.0.6
  - JDK 8u112

2 个答案:

答案 0 :(得分:1)

上述行为似乎特定于windows平台。

请确保eclipse设置使用project -> right click -> configure在项目级别选择正确的文本文件编码。即,在这种情况下更改为UTF-8,如下图所示。

Main.groovy作为groovy script执行时,您也可以在右侧看到右侧。
当然,即使您将Main.groovy作为 Java应用程序运行,也会看到正确的结果。

enter image description here

希望这有用。

答案 1 :(得分:1)

TL; DR 确保源和输出编码都配置为处理您的字符集,例如全部设置为UTF-8

print语句更改为:

System.out.println("\u6D4B\u8BD5");

或确保Eclipse知道源文件的编码。

最好的办法是更改Eclipse工作区以使用UTF-8保存文件。enter image description here

或者,更改Eclipse项目以使用UTF-8保存文件。 enter image description here

Eclipse中的每个源文件也可以有不同的编码,所以检查一下,但最好不要使用它,因为在Eclipse之外编译会非常复杂。 enter image description here

当您选择运行程序时,无论是“Java应用程序”还是“Groovy脚本”,Eclipse都将创建一个“运行配置”对象。您可以通过选择Run>来查看它们。 Run Configurations...下拉菜单。

“运行配置”具有“通用”选项卡。确保将其配置为以UTF-8显示输出。 enter image description here

完成所有操作后,您的代码运行正常。 enter image description here

请注意,我在美国,所以我的默认编码是cp1252,如图中所示,但是当我配置Eclipse执行{{1 }}

上述内容是: - Eclipse 4.5.1(Mars.1)
- Groovy 2.3.10
- Java 1.8.0_91
- Windows 7 Pro SP1