解决方法
解决方法1
在项目 build.gradle.kts
文件中加入
tasks.withType<JavaCompile> {options.encoding = "UTF-8"
}
tasks.withType<JavaExec> {systemProperty("file.encoding", "utf-8")
}
经测试, 只加
tasks.withType<JavaExec> {systemProperty("file.encoding", "utf-8")
}
就解决了
解决方法2
构建工具选"IntelliJ IDEA"后解决
过程
控制台中文出现乱码
��ѹVoltage=229.5
����Current=358
����Power=48.8
��������PowerFactor=0.59
Ƶ��Frequency=50
�¶�Temperature=20
此时的状态, java文件本身时UTF-8的,
这三处的文件编码都选了UTF8,但还是乱码
在项目 build.gradle.kts
文件中加入
tasks.withType<JavaCompile> {options.encoding = "UTF-8"
}
未能解决
在idea安装目录 idea64.exe.vmoptions
文件中加入-Dfile.encoding=UTF-8
依旧无效 , 因为此时是用本地的gradle来编译,不是idea自身来编译
-Dkotlinx.coroutines.debug=off
添加后的的 idea64.exe.vmoptions
-Xms128m
-Xmx2048m
-XX:ReservedCodeCacheSize=512m
-XX:+UseG1GC
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:CICompilerCount=2
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-XX:+IgnoreUnrecognizedVMOptions
-XX:CompileCommand=exclude,com/intellij/openapi/vfs/impl/FilePartNodeRoot,trieDescend
-ea
-Dsun.io.useCanonCaches=false
-Dsun.java2d.metal=true
-Djbr.catch.SIGABRT=true
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.attach.allowAttachSelf=true
-Djdk.module.illegalAccess.silent=true
-Dkotlinx.coroutines.debug=off
仍然未解决 , 因为此时是用本地的gradle来编译,不是idea自身来编译
将构建工具选"IntelliJ IDEA"后解决
选择用idea编译后,解决了.但不甘心,为什么用gradle构建不行呢?
其实,此时无论idea和gradle编译出的class都是UTF-8的了, 那么问题在哪呢?
查看javaSystem的file.encoding
属性
在程序中加入一句 System.out.println(System.getProperty("file.encoding"));
System.out.println(System.getProperty("file.encoding"));
发现结果时GBK!!! (构建工具选"IntelliJ IDEA"时是"UTF-8" , 选"Gradle时是"GBK" )
于是在项目 build.gradle.kts
文件中加入
tasks.withType<JavaExec> {systemProperty("file.encoding", "utf-8")
}
解决了
原因
由Gradle8.5启动的jvm环境会使用操作系统的字符集GBK,引起了乱码