温馨提示×

ubuntu java编译乱码为何

小樊
42
2026-10-04 10:23:42
栏目: 编程语言

在 Ubuntu 下用 Java 编译出现乱码,通常不是“Java 本身乱码”,而是 字符编码不一致 导致的。下面按最常见原因给你说明:


一、最常见原因:源文件编码 ≠ 编译器默认编码

1️⃣ 现象

  • javac 编译时报错或警告
  • 中文变成 ??? 或 中文
  • 运行时控制台输出乱码

2️⃣ 原因

Ubuntu 默认 locale 可能是:

LANG=C

此时 javac 默认使用 ASCII / ISO-8859-1 读取 .java 文件。

而你的 .java 文件通常是 UTF-8。


二、解决办法(推荐)

✅ 方法 1:编译时指定编码(最常用)

javac -encoding UTF-8 Hello.java

如果是多个文件:

javac -encoding UTF-8 *.java

✅ 这是最标准、最安全的做法


✅ 方法 2:统一系统编码为 UTF-8

查看当前编码:

locale

如果不是 UTF-8,设置:

sudo apt install locales
sudo dpkg-reconfigure locales

选择:

en_US.UTF-8

然后:

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

三、运行时也乱码?

1️⃣ 运行也要指定编码

java -Dfile.encoding=UTF-8 Hello

2️⃣ 终端编码问题

确认终端是 UTF-8:

echo $LANG

如果不是:

export LANG=en_US.UTF-8

四、IDE(如 IDEA / Eclipse)乱码

IntelliJ IDEA

  • File → Settings → Editor → File Encodings
  • 全部设置为 UTF-8
  • ✅ 勾选 Transparent native-to-ascii conversion

Eclipse

  • Window → Preferences → General → Workspace
  • Text file encoding → UTF-8

五、快速自查清单 ✅

检查项 命令
文件编码 file Hello.java
系统编码 locale
编译编码 javac -encoding UTF-8
运行编码 java -Dfile.encoding=UTF-8

六、一句话总结

Ubuntu 下 Java 编译乱码,99% 是因为 javac 没用 UTF-8 读文件。

如果你愿意,可以把:

  • 报错信息
  • locale 输出
  • file xxx.java 结果

贴出来,我可以帮你精确定位。

0 踩