在 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;
}
环境
- Windows 10 Pro,版本 20H2,OS 内部版本 19042.985
- OpenJDK 64 位服务器 VM (AdoptOpenJDK)(build 25.282-b08,混合模式)
- Gradle 5.6.4
- com.devsoap.plugin.vaadin 版本 2.0.0.beta2
Linux 和 Mac 上的 java 源代码默认编码为 UTF-8(编辑器),显然也由 UTF-8(编译器)编译。
在编辑器 Å Ä Ö
中未更改源的 Windows 将被视为奇怪的字符对。如果 editor 明确设置为 UTF-8,它们将正确显示。
但显然 编译器 使用默认平台编码,产生这些对。
所以设置gradle编译器编码。
compileJava {
options.encoding = 'UTF-8'
}
(gradle经验不多。)
由于 IDE 经常隐藏 gradle 的构建过程,也将 editor/compiler 编码设置为 UTF-8。
当您使用 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;
}
环境
- Windows 10 Pro,版本 20H2,OS 内部版本 19042.985
- OpenJDK 64 位服务器 VM (AdoptOpenJDK)(build 25.282-b08,混合模式)
- Gradle 5.6.4
- com.devsoap.plugin.vaadin 版本 2.0.0.beta2
Linux 和 Mac 上的 java 源代码默认编码为 UTF-8(编辑器),显然也由 UTF-8(编译器)编译。
在编辑器 Å Ä Ö
中未更改源的 Windows 将被视为奇怪的字符对。如果 editor 明确设置为 UTF-8,它们将正确显示。
但显然 编译器 使用默认平台编码,产生这些对。
所以设置gradle编译器编码。
compileJava {
options.encoding = 'UTF-8'
}
(gradle经验不多。)
由于 IDE 经常隐藏 gradle 的构建过程,也将 editor/compiler 编码设置为 UTF-8。