温馨提示×

centos中java编译乱码怎么处理

小樊
47
2026-09-21 14:07:53
栏目: 编程语言

在 CentOS 中 Java 编译出现乱码,通常是系统字符集、文件编码、javac 编码参数不一致导致的。下面按常见场景一步步处理。


一、先确认系统字符集(最常见原因)

1. 查看当前字符集

locale
echo $LANG

如果看到:

LANG=
LC_ALL=

或不是 UTF-8,就容易乱码。

2. 设置为 UTF-8(推荐)

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

永久生效(CentOS 7):

localectl set-locale LANG=zh_CN.UTF-8

CentOS 6:

vi /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"

二、确认 Java 源文件编码

查看文件编码

file -i Hello.java

如果源文件是 GBK,但系统/编译器按 UTF-8 处理,就会乱码。


三、编译时显式指定编码(最关键)

javac 指定编码

javac -encoding UTF-8 Hello.java

如果是 GBK 文件:

javac -encoding GBK Hello.java

✅ 强烈建议统一使用 UTF-8


四、运行时也指定编码

java -Dfile.encoding=UTF-8 Hello

否则即使编译正常,运行时也可能乱码。


五、IDE / 构建工具处理

Maven

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

Gradle

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

IDEA / Eclipse

  • 文件编码 → UTF-8
  • javac 参数 → -encoding UTF-8

六、常见乱码场景对照表

场景 原因 解决
编译报错乱码 系统非 UTF-8 设置 LANG
注释乱码 文件编码不一致 javac -encoding
运行时输出乱码 file.encoding 不对 -Dfile.encoding=UTF-8
日志乱码 控制台编码不对 终端 UTF-8

七、推荐最佳实践(一步到位)

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

javac -encoding UTF-8 *.java
java -Dfile.encoding=UTF-8 Main

如果你愿意,可以把:

  • locale 输出
  • file -i 文件名
  • 报错截图或信息

发出来,我可以帮你精准定位是哪一层编码出问题。

0 踩