温馨提示×

centos java编译乱码如何处理

小樊
51
2026-10-03 08:47:35
栏目: 编程语言

在 CentOS 上 Java 编译或运行出现乱码,通常是 系统字符集、文件编码、JVM 编码不一致 导致的。下面按「原因 → 解决方案」系统说明。


一、先确认问题出在哪一步

1️⃣ 查看系统字符集

locale

常见正常结果:

LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8

如果是:

POSIX
C

或没有 UTF-8,就容易乱码。


二、最常见解决方案(推荐按顺序做)

✅ 方案 1:设置系统为 UTF-8(最重要)

CentOS 7

localectl set-locale LANG=zh_CN.UTF-8

手动修改

vi /etc/locale.conf

内容:

LANG=zh_CN.UTF-8

然后:

source /etc/locale.conf

✅ 重新登录或重启


✅ 方案 2:编译时指定编码(非常关键)

Java 默认使用 系统编码,CentOS 经常不是 UTF-8。

javac -encoding UTF-8 *.java

✅ 如果是 Maven / Gradle:

Maven

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

Gradle

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

✅ 方案 3:运行 Java 程序时指定编码

java -Dfile.encoding=UTF-8 Main

✅ 推荐写成启动脚本:

java -Dfile.encoding=UTF-8 -jar app.jar

三、文件本身编码问题(很多人忽略)

查看文件编码

file -i Test.java

如果不是 UTF-8:

iconv -f GBK -t UTF-8 Test.java -o Test_utf8.java

四、终端乱码(不是 Java 问题)

SecureCRT / Xshell

  • 终端编码设置为 UTF-8
  • 字体支持中文

bash 环境

export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

五、日志 / 控制台乱码

如果是 日志框架(logback / log4j):

<encoder>
    <pattern>%d %msg%n</pattern>
    <charset>UTF-8</charset>
</encoder>

六、快速自检清单 ✅

✅ 系统 locale = UTF-8
✅ javac -encoding UTF-8
✅ java -Dfile.encoding=UTF-8
✅ 源文件是 UTF-8
✅ 终端是 UTF-8


七、如果你愿意,我可以更精准帮你

你可以告诉我:

  1. CentOS 版本(7 / 8 / Stream)
  2. 乱码出现在 编译 / 运行 / 日志 / 界面
  3. 示例代码或报错信息

我可以直接给你 针对性命令。

0 踩