在 Windows 中使用 Gradle 构建时 Vaadin 8 Framework 应用程序中的编码问题

Encoding problem in Vaadin 8 Framework application when building with Gradle in Windows

当您使用 Gradle 插件 com.devsoap.plugin.vaadin for building Vaadin 8 应用程序时,只要您使用 Linux 或 Mac,一切正常。 setContent(new Label("A B C Å Ä Ö")) 按预期打印出字符 A B C Å Ä Ö

但是,如果您 运行 在 Windows 中的应用程序将打印出以下字符:A B C Ã… Ä Ö.

我该如何解决这个问题?

请参阅下面 sample project 中的基本文件。

build.gradle

plugins {
  id 'com.devsoap.plugin.vaadin' version '2.0.0.beta2'
}

ExampleUI.java

@SuppressWarnings("serial")
public class ExampleUI extends UI { 
    @Override
    protected void init(VaadinRequest request) {
        setContent(new Label("A B C Å Ä Ö"));
    }
}

ExampleServlet.java

@WebServlet(
    asyncSupported=false,
    urlPatterns={"/*","/VAADIN/*"},
    initParams={
        @WebInitParam(name="ui", value="haba713.ExampleUI")
    })
public class ExampleServlet extends VaadinServlet {
    private static final long serialVersionUID = 1L;
}

环境

Linux 和 Mac 上的 java 源代码默认编码为 UTF-8(编辑器),显然也由 UTF-8(编译器)编译。

在编辑器 Å Ä Ö 中未更改源的 Windows 将被视为奇怪的字符对。如果 editor 明确设置为 UTF-8,它们将正确显示。

但显然 编译器 使用默认平台编码,产生这些对。

所以设置gradle编译器编码。

compileJava {
    options.encoding = 'UTF-8'
}

(gradle经验不多。)

由于 IDE 经常隐藏 gradle 的构建过程,也将 editor/compiler 编码设置为 UTF-8。