Java Gradle Eclipse - UTF-8 符号在 IDE 构建之前显示,但在构建之后不显示
Java Gradle Eclipse - UTF-8 symbols showing before build in IDE but not after build
我对编码还很陌生,目前我正在尝试在 Eclipse 中使用 gradle 构建我的第一个胖 JAR。我的项目生成一个 HTML 文件,其中包含我从 JSON 文件中获取的数据。那里的一些字符串使用 UTF-8 symbols/emojis。我设法使用“Jackson”并通过对字符串使用 getBytes() 方法将它们放入我的 java 对象中。当我从 eclipse 中的那些对象生成 HTML 时,它们以正确的方式显示(在 eclipse 之外的浏览器中打开时)。
问题出现了,当我用“gradlew jar”构建 fat jar 时(我不得不在 build.gradle 中对 jar 进行一些更改以使其包含依赖项)。
一切正常,除了未显示 UTF-8 符号外,我得到一个“?”,就像编码设置不正确一样。
所以我认为问题是 gradle.
中的编码设置
到目前为止我尝试的是将此添加到 gradlew.bat:
set GRADLE_OPTS=-Dfile.encoding=utf-8
这对 build.gradle :
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
这对 gradle.Properties
systemProp.file.encoding=utf-8
就像本帖中提到的那样Show UTF-8 text properly in Gradle
None 似乎有帮助。有任何想法吗?我卡住了,正在努力寻找解决方案。
-Dfile.encoding=UTF-8
设置运行时 使用的 默认编码 当 运行 您编译的代码时,例如java -Dfile.encoding=UTF-8 -jar ...
。不要将它与 Java 编译器用来读取 .java
文件的编码混淆:javac -encoding ...
.
为了避免在命令行上设置它,您也可以通过 System.setProperty("file.encoding", "UTF-8");
以编程方式设置它。但最好在它使用的地方设置编码,例如而不是 BufferedWriter writer= Files.newBufferedWriter(path);
use BufferedWriter writer= Files.newBufferedWriter(path, StandardCharsets.UTF_8);
.
我对编码还很陌生,目前我正在尝试在 Eclipse 中使用 gradle 构建我的第一个胖 JAR。我的项目生成一个 HTML 文件,其中包含我从 JSON 文件中获取的数据。那里的一些字符串使用 UTF-8 symbols/emojis。我设法使用“Jackson”并通过对字符串使用 getBytes() 方法将它们放入我的 java 对象中。当我从 eclipse 中的那些对象生成 HTML 时,它们以正确的方式显示(在 eclipse 之外的浏览器中打开时)。 问题出现了,当我用“gradlew jar”构建 fat jar 时(我不得不在 build.gradle 中对 jar 进行一些更改以使其包含依赖项)。 一切正常,除了未显示 UTF-8 符号外,我得到一个“?”,就像编码设置不正确一样。 所以我认为问题是 gradle.
中的编码设置到目前为止我尝试的是将此添加到 gradlew.bat:
set GRADLE_OPTS=-Dfile.encoding=utf-8
这对 build.gradle :
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
这对 gradle.Properties
systemProp.file.encoding=utf-8
就像本帖中提到的那样Show UTF-8 text properly in Gradle
None 似乎有帮助。有任何想法吗?我卡住了,正在努力寻找解决方案。
-Dfile.encoding=UTF-8
设置运行时 使用的 默认编码 当 运行 您编译的代码时,例如java -Dfile.encoding=UTF-8 -jar ...
。不要将它与 Java 编译器用来读取 .java
文件的编码混淆:javac -encoding ...
.
为了避免在命令行上设置它,您也可以通过 System.setProperty("file.encoding", "UTF-8");
以编程方式设置它。但最好在它使用的地方设置编码,例如而不是 BufferedWriter writer= Files.newBufferedWriter(path);
use BufferedWriter writer= Files.newBufferedWriter(path, StandardCharsets.UTF_8);
.