在 Ubuntu 下 Java 编译出现乱码,通常不是“代码写错了”,而是 字符编码不一致 导致的。下面按最常见原因给你梳理一下。
Ubuntu 默认 locale 有时不是 UTF‑8,或终端不是 UTF‑8。
现象
非法字符编译时显式指定编码:
javac -encoding UTF-8 Hello.java
如果是 IDE(IDEA / Eclipse),也要设置:
locale
如果看到:
LANG=C
LC_CTYPE=C
或不是 UTF-8,就容易乱码。
sudo apt install locales
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8
然后重启终端或执行:
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
如果你说的是 运行时乱码:
System.out.println("中文");
JVM 默认使用系统编码
运行加参数:
java -Dfile.encoding=UTF-8 Main
Windows 默认可能是 GBK
file Hello.java
iconv -f GBK -t UTF-8 Hello.java -o Hello_utf8.java
90% 的 Ubuntu Java 乱码问题,都是因为没统一成 UTF‑8
✅ 统一三处即可:
javac -encoding UTF-8如果你愿意,可以把:
locale 输出file 你的.java贴出来,我可以帮你精准定位。