找回密码
 立即注册
首页 业界区 安全 记录一次idea上gradle项目的中文乱码问题

记录一次idea上gradle项目的中文乱码问题

港髁 2026-1-13 15:10:00
处理完成后的效果:

 测试代码,build.gradle文件加入以下代码并执行:
  1. task testChineseOutput {  doLast {    println new String('测试中文输出:你好,世界!'.getBytes('UTF-8'), 'UTF-8')  }}
复制代码
所有修改步骤:
1、build.gradle中的中文设置:
  1. // ===================== Gradle 编码配置 =====================// 确保 Gradle 构建过程使用 UTF-8 编码tasks.withType(GroovyCompile) {    options.encoding = 'UTF-8'}// 确保 Gradle 控制台输出使用 UTF-8 编码if (System.getProperty('os.name').toLowerCase().contains('windows')) {    // Windows 环境下强制使用 UTF-8 编码    System.setProperty('console.encoding', 'UTF-8')    // 确保系统输出使用 UTF-8    System.setProperty('file.encoding', 'UTF-8')    System.setProperty('sun.jnu.encoding', 'UTF-8')    // 确保 Gradle 守护进程使用 UTF-8    System.setProperty('org.gradle.jvmargs', '-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8')}// 确保所有任务都使用 UTF-8 编码tasks.withType(JavaCompile) {    options.encoding = 'UTF-8'}// 确保测试任务使用 UTF-8 编码tasks.withType(Test) {    systemProperty 'file.encoding', 'UTF-8'    systemProperty 'sun.jnu.encoding', 'UTF-8'}// 确保资源处理使用 UTF-8 编码tasks.withType(ProcessResources) {    // 资源处理编码设置    filteringCharset = 'UTF-8'    outputs.upToDateWhen { false }}// 确保文档生成使用 UTF-8 编码tasks.withType(Javadoc) {    options.encoding = 'UTF-8'}// ===================== 编码全局配置 =====================tasks.withType(Test) {  systemProperty 'file.encoding', 'UTF-8'}tasks.withType(JavaCompile).configureEach {  options.encoding = "UTF-8"  options.compilerArgs.addAll(['-Xlint:unchecked', '-Xlint:deprecation'])  sourceCompatibility = JavaVersion.VERSION_17  targetCompatibility = JavaVersion.VERSION_17}tasks.withType(JavaExec) {  systemProperty 'file.encoding', 'UTF-8'  systemProperty 'sun.jnu.encoding', 'UTF-8'  defaultCharacterEncoding = 'UTF-8'}tasks.withType(Javadoc) {  options.encoding = 'UTF-8'}// ===================== 编译兜底配置 =====================compileJava {  options.encoding = 'UTF-8'  options.compilerArgs.addAll(['-Xlint:unchecked', '-Xlint:deprecation'])  sourceCompatibility = JavaVersion.VERSION_17  targetCompatibility = JavaVersion.VERSION_17}java {  buildSearchableOptions.defaultCharacterEncoding = 'UTF-8'  sourceCompatibility = JavaVersion.VERSION_17  targetCompatibility = JavaVersion.VERSION_17}javadoc {  options.encoding = 'UTF-8'}// ===================== IDE运行配置 =====================runIde {  // 解析JavaFX模块路径  def javafxJars = configurations.runtimeClasspath.files.findAll {    it.name.startsWith('javafx-') && it.name.endsWith('.jar')  }  def javafxModulePath = javafxJars.join(File.pathSeparator)  // JVM参数(语法严谨,无冗余)  jvmArgs = [          '-Xmx2048m',          '-Dfile.encoding=UTF-8',          '-Dsun.jnu.encoding=UTF-8',          "--module-path=${javafxModulePath}",          '--add-modules=javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.swing,javafx.web',          '--add-exports=javafx.web/com.sun.webkit.network=ALL-UNNAMED',          '--add-exports=javafx.web/com.sun.webkit.graphics=ALL-UNNAMED',          '--add-exports=javafx.web/com.sun.webkit.dom=ALL-UNNAMED',          '--add-exports=javafx.graphics/com.sun.javafx.scene=ALL-UNNAMED',          '--add-exports=javafx.web/com.sun.webkit=ALL-UNNAMED',          '--add-opens=javafx.web/javafx.scene.web=ALL-UNNAMED',          '--add-opens=javafx.web/com.sun.javafx.scene.web=ALL-UNNAMED',          '--add-opens=javafx.web/com.sun.webkit=ALL-UNNAMED',          '-Djavafx.media.threads=8',          '-Dprism.forceGPU=false',          '-Djava.net.preferIPv4Stack=true',          '-Dsun.net.http.allowRestrictedHeaders=true',          '-Dwebkit.media.player.useNative=true'  ]  // 编码环境变量(标准Map写法)  environment([          'IDE_PROPERTIES_FILE_ENCODING': 'UTF-8',          'FILE_ENCODING': 'UTF-8'  ])}
复制代码
2、gradle.properties中的编码设置:
  1. org.gradle.jvmargs=-Dfile.encoding=UTF-8systemProp.file.encoding=UTF-8
复制代码
3、gradle-wrapper.properties中的编码设置:
  1. org.gradle.jvmargs=-Dfile.encoding=UTF-8
复制代码
4、idea中VM的设置,插入
  1. -Dfile.encoding=UTF-8
复制代码

 5、idea的setting配置:

6、idea的gradle设置:

7、run plugin 等启动器的设置,加入VM参数-Dfile.encoding=UTF-8:

 
 
走到这一步,如果中文乱码问题已经处理好,说明你已经很幸运了,但实际上并没有用。哈哈哈哈
终极方案,环境变量+系统重启+重编译:

 加入环境变量:
GRADLE_OPTS  -Dfile.encoding=utf-8
JAVA_TOOL_OPTIONS  -Dfile.encoding=UTF-8
 -------------------------------------------------完事------------------------------------------------------
以上就是个人历时三周,各种查资料,各种AI的心路历程。
主要原因就是,个人开发习惯UTF-8的编码,但是实际上CMD上执行命令 chcp 会发现,系统默认的是GBK

 所以需要各种修改,最快捷的办法还是先 chcp 查一下当前系统默认编码,然后直接去修改IDEA的编码配置。 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册