【问题标题】:Java Gradle Eclipse - UTF-8 symbols showing before build in IDE but not after buildJava Gradle Eclipse - UTF-8 符号在 IDE 中构建之前显示,但在构建之后不显示
【发布时间】:2022-02-13 23:55:01
【问题描述】:

我对编码还很陌生,目前我正在尝试在 Eclipse 中使用 gradle 构建我的第一个胖 JAR。我的项目生成一个 HTML 文件,其中包含我从 JSON 文件中获取的数据。那里的一些字符串使用 UTF-8 符号/表情符号。我设法用“Jackson”和对字符串使用 getBytes() 方法将它们放入我的 java 对象中。当我在 Eclipse 中从这些对象生成 HTML 时,它们会以正确的方式显示(在 Eclipse 之外的浏览器中打开时)。 当我使用“gradlew jar”构建胖 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

这些似乎都没有帮助。有任何想法吗?我卡住了,很难找到解决方案。

【问题讨论】:

  • 你是否也使用-Dfile.encoding=UTF-8 来运行你的胖JAR? -Dfile.encoding=... 是运行时使用的默认编码。不要将它与 Java 编译器用于读取 .java 文件的编码混淆 (javac -encoding ...)。
  • 不,我用java -jar name.jar运行它
  • 谢谢,嚎叫。使用java -jar -Dfile.encoding=UTF-8 name.jar 运行它可以工作。
  • 虽然我不喜欢这样,但我必须将其添加到我的命令中。有没有办法在项目/JAR 中设置它?

标签: java windows eclipse gradle utf-8


【解决方案1】:

-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);

【讨论】:

  • 再次感谢嚎叫。设置编写 HTML 的编码有助于避免添加命令行。 BufferedWriter br = new BufferedWriter((new OutputStreamWriter(new FileOutputStream("test.html"), StandardCharsets.UTF_8)));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-19
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多