在 CentOS 上编译 Java 程序时,编码设置主要涉及两方面:
下面按常见场景说明。
如果你的 .java 源文件是 UTF-8(CentOS 默认常常是 UTF-8,但终端可能不是),一定要显式指定:
javac -encoding UTF-8 Hello.java
如果源文件是 GBK:
javac -encoding GBK Hello.java
✅ 推荐所有项目都加 -encoding UTF-8,避免乱码。
java -XshowSettings:properties -version
重点关注:
file.encoding=UTF-8
java -Dfile.encoding=UTF-8 Hello
或在 Tomcat / 服务中加 JVM 参数:
JAVA_OPTS="-Dfile.encoding=UTF-8"
locale
如果不是 UTF-8,建议修改:
sudo localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
永久生效(CentOS 7/8):
sudo vi /etc/locale.conf
内容:
LANG="zh_CN.UTF-8"
在 pom.xml 中设置:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
❌ 错误:乱码 / 编码 GBK 的不可映射字符
✅ 解决:javac -encoding UTF-8
❌ 错误:Linux 上中文正常,Windows 乱码
✅ 解决:统一使用 UTF-8
✅ 源文件 UTF-8
✅ javac 强制 -encoding UTF-8
✅ 运行加 -Dfile.encoding=UTF-8
✅ CentOS 系统 locale 为 UTF-8
如果你有 具体报错信息 或 用的 CentOS 版本 / Java 版本,我可以给你更精确的建议。