在 CentOS 上 Java 编译出现乱码,通常是 系统字符集、文件编码、javac 编码参数不一致 导致的。下面按常见场景给你一套排查和解决方法。
locale
echo $LANG
如果不是 UTF-8(例如 zh_CN.GBK、C),就容易乱码。
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
如果提示不存在,先安装:
localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
永久生效(CentOS 7):
vi /etc/locale.conf
LANG="zh_CN.UTF-8"
file -i YourFile.java
如果是 iso-8859-1 或 gbk,而系统是 UTF-8,就会乱码。
-encodingjavac -encoding UTF-8 *.java
如果是 GBK 文件:
javac -encoding GBK *.java
✅ 推荐:统一使用 UTF-8
java -Dfile.encoding=UTF-8 Main
:set fileencoding=utf-8
javac Test.java
✅ 解决:
javac -encoding UTF-8 Test.java
echo "中文"
✅ 安装中文支持:
yum groupinstall "Chinese Support"
LANG=zh_CN.UTF-8
javac -encoding UTF-8 xxx.java
java -Dfile.encoding=UTF-8 xxx
如果你愿意,可以把:
发给我,我可以帮你精准定位是哪一步出的问题。