温馨提示×

CentOS编译Java乱码怎么办

小樊
45
2026-07-21 02:22:24
栏目: 编程语言

CentOS 上编译 Java 出现乱码,通常是 系统字符集、JDK 字符集、源码文件编码不一致 导致的。下面按常见原因给你一套排查和解决方案。


一、最常见原因总结

原因 表现
系统语言环境不是 UTF-8 javac 编译中文注释/字符串乱码
源码文件不是 UTF-8 编译或运行时中文乱码
JDK 默认编码不是 UTF-8 编译期或运行期乱码
终端编码不一致 控制台输出乱码

二、快速排查

1️⃣ 查看系统字符集

locale

如果看到类似:

LANG=en_US
LC_ALL=

或不是 UTF-8,就可能有问题。

✅ 推荐结果:

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8

2️⃣ 查看 Java 默认编码

java -XshowSettings:properties -version 2>&1 | grep file.encoding

或:

javac -version

如果不是 UTF-8,编译中文就会乱码。


三、解决方案(按推荐顺序)


✅ 方案一:设置系统为 UTF-8(强烈推荐)

CentOS 7 / 8 通用

localectl set-locale LANG=en_US.UTF-8

或直接修改:

vi /etc/locale.conf

加入:

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8

然后:

source /etc/locale.conf

重启或重新登录。


✅ 方案二:编译时强制指定 UTF-8(最常见)

编译时指定编码

javac -encoding UTF-8 *.java

这是解决乱码最直接的方法

如果是 Maven 项目:

mvn clean compile -Dfile.encoding=UTF-8

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

java -Dfile.encoding=UTF-8 Main

✅ 方案四:确认源码文件是 UTF-8

查看文件编码

file Hello.java

如果不是 UTF-8,转换:

iconv -f GBK -t UTF-8 Hello.java -o Hello_utf8.java

或用 vim

:set fileencoding=utf-8
:wq

✅ 方案五:Maven 项目(非常重要)

pom.xml 中加:

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

四、终端乱码(SSH / Xshell)

如果是 终端显示乱码

  • Xshell / SecureCRT:
    → 会话属性 → 编码 → UTF-8
  • SSH:
export LANG=en_US.UTF-8

五、最小可用配置(推荐)

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"

写入:

~/.bashrc

六、总结一句话

CentOS 编译 Java 乱码,99% 是编码不一致导致的,统一使用 UTF-8 即可解决。

如果你愿意,可以把:

  • CentOS 版本
  • JDK 版本
  • 乱码截图或示例

发给我,我可以帮你精准定位 ✅

0