在 Ubuntu 下用 Java 编译出现乱码,通常不是“Java 本身乱码”,而是 字符编码不一致 导致的。下面按最常见原因给你说明:
javac 编译时报错或警告??? 或 䏿–‡Ubuntu 默认 locale 可能是:
LANG=C
此时 javac 默认使用 ASCII / ISO-8859-1 读取 .java 文件。
而你的 .java 文件通常是 UTF-8。
javac -encoding UTF-8 Hello.java
如果是多个文件:
javac -encoding UTF-8 *.java
✅ 这是最标准、最安全的做法
查看当前编码:
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
java -Dfile.encoding=UTF-8 Hello
确认终端是 UTF-8:
echo $LANG
如果不是:
export LANG=en_US.UTF-8
File → Settings → Editor → File EncodingsTransparent native-to-ascii conversionWindow → Preferences → General → Workspace| 检查项 | 命令 |
|---|---|
| 文件编码 | file Hello.java |
| 系统编码 | locale |
| 编译编码 | javac -encoding UTF-8 |
| 运行编码 | java -Dfile.encoding=UTF-8 |
Ubuntu 下 Java 编译乱码,99% 是因为
javac没用 UTF-8 读文件。
如果你愿意,可以把:
locale 输出file xxx.java 结果贴出来,我可以帮你精确定位。