在 CentOS 上用 javac 编译 Java 程序 时,编码问题通常出现在源码文件编码 ≠ 编译器默认编码的情况下。下面按常见场景说明怎么设置。
-encoding 参数javac -encoding UTF-8 Hello.java
如果是 GBK 源码:
javac -encoding GBK Hello.java
✅ 推荐始终显式指定编码
CentOS 默认可能是:
UTF-8(较新版)GBK / ASCII(老版本或最小化安装)查看当前编码:
echo $LANG
locale
如果看到:
LANG=zh_CN.GBK
就更容易出现中文乱码。
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
然后再编译:
javac -encoding UTF-8 Hello.java
localectl set-locale LANG=en_US.UTF-8
或编辑:
vi /etc/locale.conf
内容:
LANG=en_US.UTF-8
重启或重新登录生效。
即使编译对了,运行也可能乱码:
java -Dfile.encoding=UTF-8 Hello
或:
export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
pom.xml 中指定<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
-encoding UTF-8-Dfile.encoding=UTF-8如果你愿意,可以贴一下:
我可以帮你精确定位问题。