Gradle IDEA 乱码

环境

Java 环境

java version "21.0.2" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 21.0.2+13-LTS-58)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.2+13-LTS-58, mixed mode, sharing)

Gradle 环境

------------------------------------------------------------
Gradle 8.5
------------------------------------------------------------

Build time:   2023-11-29 14:08:57 UTC
Revision:     28aca86a7180baa17117e0e5ba01d8ea9feca598

Kotlin:       1.9.20
Groovy:       3.0.17
Ant:          Apache Ant(TM) version 1.10.13 compiled on January 4 2023
JVM:          21.0.2 (Oracle Corporation 21.0.2+13-LTS-58)
OS:           Windows 11 10.0 amd64

IDEA

IntelliJ IDEA 2023.3.3 (Ultimate Edition)
Build #IU-233.14015.106, built on January 25, 2024
Subscription is active until October 14, 2024.
Runtime version: 17.0.9+7-b1087.11 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11.0
GC: G1 Young Generation, G1 Old Generation
Memory: 2048M
Cores: 32
Registry:
  debugger.new.tool.window.layout=true
  ide.experimental.ui=true
Non-Bundled Plugins:
  com.jetbrains.packagesearch.intellij-plugin (233.11799.196)
  com.intellij.ml.llm (233.14015.137)
Kotlin: 233.14015.106-IJ

代码

Main.java

package com.stu;

public class Main {
   

    public static void main(String[] args) {
   
        Main main = new Main();
        main.test00();
    }

    public void test00() {
   
        System.out.println("中文测试");
        System.out.println("sun.stdout.encoding = " + System.getProperty("sun.stdout.encoding"));
        System.out.println("sun.stderr.encoding = " + System.getProperty("sun.stderr.encoding"));
        System.out.println("      file.encoding = " + System.getProperty("file.encoding"));
        System.out.println("    native.encoding = " + System.getProperty("native.encoding"));
    }
}

build.gradle.kts

/*
 * This file was generated by the Gradle 'init' task.
 *
 * This is a general purpose Gradle build.
 * To learn more about Gradle by exploring our Samples at https://docs.gradle.org/8.5/samples
 */

plugins {
   
    id("java")
}

tasks.register("runCode", JavaExec::class) {
   
    //defaultCharacterEncoding = "GBK"

    // println("测试Code" + defaultCharacterEncoding)

    mainClass = "com.stu.Main"
    classpath = sourceSets["main"].runtimeClasspath

    group = "Exec"
    description = "运行指定代码"
}

// tasks.register("runStu") {
   
//     for (sourceSetContainer in sourceSets) {
   
//         println(sourceSetContainer)
//     }

//     println(sourceSets)
// }

// tasks.withType<JavaCompile>().configureEach {
   

// }

/*
tasks.withType(JavaExec::class.java) {
    val args:List<String> = ArrayList()
    args.addLast("-Dsun.stdout.encoding=GBK")
    args.addLast("-Dsun.stderr.encoding=GBK")
    args.addLast("-Dfile.encoding=GBK")
    this.jvmArgs = args
    println(this.jvmArgs)
}
*/

测试结果

配置 JAVA_TOOL_OPTIONS

无效

# 配置 JAVA_TOOL_OPTIONS  -Dsun.stdout.encoding=GBK -Dsun.stderr.encoding=GBK -Dfile.encoding=GBK

> Task :runCode
涓枃娴嬭瘯
sun.stdout.encoding = UTF-8
sun.stderr.encoding = UTF-8
      file.encoding = GBK
    native.encoding = GBK

配置 build.gradle.kts

有效

tasks.withType(JavaExec::class.java) {
   
    val args:List<String> = ArrayList()
    args.addLast("-Dsun.stdout.encoding=GBK")
    args.addLast("-Dsun.stderr.encoding=GBK")
    args.addLast("-Dfile.encoding=GBK")
    this.jvmArgs = args
    println(this.jvmArgs)
}
> Task :runCode
中文测试
sun.stdout.encoding = GBK
sun.stderr.encoding = GBK
      file.encoding = GBK
    native.encoding = GBK

配置 idea64.exe.vmoptions

无效

-Dsun.stdout.encoding=GBK
-Dsun.stderr.encoding=GBK
-Dfile.encoding=GBK
> Task :runCode
涓枃娴嬭瘯
sun.stdout.encoding = UTF-8
sun.stderr.encoding = UTF-8
      file.encoding = GBK
    native.encoding = GBK

无配置

无效


> Task :runCode
涓枃娴嬭瘯
sun.stdout.encoding = UTF-8
sun.stderr.encoding = UTF-8
      file.encoding = GBK
    native.encoding = GBK

总结

只有配置JavaExec 运行环境才能不乱码,配置了JAVA_TOOL_OPTIONS,可以在VSCode 中 PowerShell 执行任务中日志不乱码,但是执行结果还是乱码。

问题链接

Gradle 社区问题: Gradle Garbled code

Stack overflow: Why do Java programs created using Gradle generate garbled code when running

相关推荐

  1. CentOS 中文

    2024-02-10 08:52:01       47 阅读
  2. Gradle IDEA

    2024-02-10 08:52:01       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-10 08:52:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-10 08:52:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-10 08:52:01       82 阅读
  4. Python语言-面向对象

    2024-02-10 08:52:01       91 阅读

热门阅读

  1. 突破编程_C++_基础教程(类的基础知识)

    2024-02-10 08:52:01       43 阅读
  2. PyTorch: torch.max()函数详解

    2024-02-10 08:52:01       50 阅读
  3. 语义分割任务的准确率计算:基于PyTorch实现

    2024-02-10 08:52:01       57 阅读
  4. ARM交叉编译搭建SSH

    2024-02-10 08:52:01       50 阅读
  5. 并发、串行与同步、异步

    2024-02-10 08:52:01       50 阅读
  6. 微信小程序:父组件调用子组件的方法

    2024-02-10 08:52:01       48 阅读
  7. itextpdf使用:使用PdfReader添加图片水印

    2024-02-10 08:52:01       54 阅读
  8. MyBatis-Plus 实现分页

    2024-02-10 08:52:01       48 阅读
  9. Lua metatable & metamethod

    2024-02-10 08:52:01       54 阅读
  10. 力扣热题100_双指针_283_移动零

    2024-02-10 08:52:01       59 阅读
  11. 力扣-260. 只出现一次的数字 III

    2024-02-10 08:52:01       46 阅读