温馨提示×

centos编译java乱码如何处理

小樊
39
2026-09-03 06:34:31
栏目: 编程语言

在 CentOS 上编译 Java 出现乱码,通常是因为系统字符集不是 UTF-8javac 未指定编码。可以按下面步骤处理:


一、确认系统字符集

locale

如果看到类似:

LANG=zh_CN.GBK
LC_ALL=

LANG=C,就容易导致乱码。

修改为 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

或编辑:

vi /etc/locale.conf

内容:

LANG=zh_CN.UTF-8

二、编译 Java 时显式指定编码(最重要)

即使系统乱码,也可以强制 javac 使用 UTF-8:

javac -encoding UTF-8 *.java

如果是 Maven 项目:

mvn clean compile -Dfile.encoding=UTF-8

Maven pom.xml 示例:

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

三、检查源码文件本身编码

查看文件编码:

file -i Hello.java

如果不是 UTF-8,可转换:

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

四、Tomcat / 运行环境乱码(补充)

如果是运行时乱码:

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

Tomcat:

vi bin/catalina.sh

加入:

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

五、小结(最常见解决方案)

编译时加 -encoding UTF-8
系统 locale 设为 UTF-8
源码文件本身是 UTF-8

如果你能贴出:

  • 报错信息
  • javac 命令
  • 源码编码

我可以更精准帮你定位。

0