温馨提示×

centosjava编译编码怎么设置

小樊
33
2026-09-30 11:05:28
栏目: 编程语言

在 CentOS 上用 javac 编译 Java 程序 时,编码问题通常出现在源码文件编码 ≠ 编译器默认编码的情况下。下面按常见场景说明怎么设置。


一、编译时指定编码(最常用)

1️⃣ 使用 -encoding 参数

javac -encoding UTF-8 Hello.java

如果是 GBK 源码:

javac -encoding GBK Hello.java

✅ 推荐始终显式指定编码


二、CentOS 默认编码问题

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

四、永久修改 CentOS 编码(推荐服务器)

CentOS 7

localectl set-locale LANG=en_US.UTF-8

或编辑:

vi /etc/locale.conf

内容:

LANG=en_US.UTF-8

重启或重新登录生效。


五、Java 运行时编码(容易忽略)

即使编译对了,运行也可能乱码:

java -Dfile.encoding=UTF-8 Hello

或:

export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"

六、Maven 项目(常见坑)

pom.xml 中指定

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>

七、推荐最佳实践 ✅

  1. 源码统一用 UTF-8
  2. 编译必加 -encoding UTF-8
  3. 服务器 LANG 设为 UTF-8
  4. 运行时加 -Dfile.encoding=UTF-8

如果你愿意,可以贴一下:

  • CentOS 版本
  • Java 版本
  • 报错信息或乱码截图

我可以帮你精确定位问题。

0 踩