在 Debian 下用 Java 编译出现乱码,通常是因为 系统/终端字符集不是 UTF-8,或 源文件编码与 javac 默认编码不一致。下面按常见场景给你解决方案。
locale
如果看到类似:
LANG=C
LC_ALL=
或不是 UTF-8,就会容易乱码。
sudo apt install locales
sudo dpkg-reconfigure locales
勾选:
en_US.UTF-8
(或 zh_CN.UTF-8)
然后:
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
可写入:
~/.bashrc
即使系统编码没问题,也建议显式指定:
javac -encoding UTF-8 Hello.java
如果是 GBK 源文件:
javac -encoding GBK Hello.java
✅ 这是最推荐的做法
检查文件编码:
file Hello.java
如果是 ISO-8859 或 GB2312,而你在 UTF-8 环境编译,就会乱码。
iconv -f GBK -t UTF-8 Hello.java > Hello_utf8.java
如果是 编译成功但输出乱码:
java -Dfile.encoding=UTF-8 Hello
或设置:
export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
# 1. 系统 UTF-8
locale
# 2. 编译时指定
javac -encoding UTF-8 Xxx.java
# 3. 运行时指定
java -Dfile.encoding=UTF-8 Xxx
如果你愿意,可以把:
locale 输出发给我,我可以帮你精准定位。