在 CentOS 上编译 Java 出现乱码,通常是因为系统字符集不是 UTF-8 或 javac 未指定编码。可以按下面步骤处理:
locale
如果看到类似:
LANG=zh_CN.GBK
LC_ALL=
或 LANG=C,就容易导致乱码。
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
即使系统乱码,也可以强制 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
如果是运行时乱码:
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
如果你能贴出:
我可以更精准帮你定位。