温馨提示×

centos java编译编码如何设置

小樊
56
2026-09-06 10:41:46
栏目: 编程语言

在 CentOS 上编译 Java 程序时,编码设置主要涉及两方面:

  1. javac 编译时的源文件编码
  2. 运行时(java)的默认字符编码

下面按常见场景说明。


一、javac 编译时指定编码(最重要)

如果你的 .java 源文件是 UTF-8(CentOS 默认常常是 UTF-8,但终端可能不是),一定要显式指定:

javac -encoding UTF-8 Hello.java

如果源文件是 GBK:

javac -encoding GBK Hello.java

✅ 推荐所有项目都加 -encoding UTF-8,避免乱码。


二、Java 运行时编码设置

1. 查看当前默认编码

java -XshowSettings:properties -version

重点关注:

file.encoding=UTF-8

2. 运行 Java 程序时指定编码

java -Dfile.encoding=UTF-8 Hello

或在 Tomcat / 服务中加 JVM 参数:

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

三、CentOS 系统环境编码(影响终端和 Java)

查看系统编码

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"

四、Maven 项目(常见坑)

在 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 版本,我可以给你更精确的建议。

0 踩