温馨提示×

centos java编译乱码怎么处理

小樊
54
2026-09-18 11:00:36
栏目: 编程语言

在 CentOS 上用 Java 编译或运行 出现乱码,通常是 系统编码、终端编码、Java 编码不一致 导致的。可以按下面步骤逐一排查和解决。


一、先确认系统编码

locale

正常应是:

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

如果不是 UTF-8,先设置:

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

(永久生效可写入 /etc/profile 或 ~/.bashrc)


二、确认 CentOS 已安装中文 UTF-8 语言包

locale -a | grep zh_CN

如果没有,安装:

yum install -y glibc-common
localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8

三、Java 编译乱码(javac)

1️⃣ 明确指定编码(最重要)

javac -encoding UTF-8 Hello.java

如果源码是 GBK:

javac -encoding GBK Hello.java

✅ 推荐:永远用 UTF-8 写代码 + 编译时指定 UTF-8


四、Java 运行时乱码(java)

运行也指定编码:

java -Dfile.encoding=UTF-8 Hello

五、终端 / SSH 客户端编码

如果你用:

  • Xshell / SecureCRT / PuTTY

确保:

  • 终端编码 = UTF-8
  • 字体支持中文

否则即使 Java 正常,也会显示乱码。


六、Tomcat / 服务启动乱码

如果是 Web 项目:

export JAVA_OPTS="-Dfile.encoding=UTF-8"

或在 catalina.sh 中加:

JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"

七、Maven 编译乱码

export MAVEN_OPTS="-Dfile.encoding=UTF-8"

或在 pom.xml:

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

八、快速自检清单 ✅

检查项 命令
系统编码 locale
编译编码 javac -encoding UTF-8
运行编码 java -Dfile.encoding=UTF-8
文件编码 file xxx.java
终端编码 SSH 客户端设置

九、常见错误总结

❌ 文件是 UTF-8,但没加 -encoding
❌ CentOS 默认 en_US 导致中文乱码
❌ Windows 写代码用 GBK,Linux 用 UTF-8
❌ 只改运行没改编译


如果你愿意,可以把:

  • 报错信息
  • locale 输出
  • javac 命令 发出来,我可以帮你精确定位是哪一步乱码。

0 踩