在 Ubuntu 下 Java 出现乱码,通常是字符编码不一致(文件、终端、JVM、系统 locale 不匹配)导致的。下面按「最常见 → 最彻底」的顺序给你一套排查与解决方案。
locale
正常应类似:
LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8
如果不是 UTF-8,先修复:
sudo apt install locales
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8
然后重新登录或重启。
java -Dfile.encoding=UTF-8 -jar yourapp.jar
或在代码中显式指定:
new InputStreamReader(System.in, "UTF-8");
new OutputStreamWriter(System.out, "UTF-8");
确保终端编码是 UTF-8:
测试:
echo "中文测试"
查看文件编码:
file -i Test.java
如果不是 UTF-8:
iconv -f GBK -t UTF-8 Test.java > Test_utf8.java
Java 源文件推荐统一用 UTF-8。
修改:
bin/catalina.sh
加:
JAVA_OPTS="-Dfile.encoding=UTF-8"
[Service]
Environment=LANG=zh_CN.UTF-8
Environment=LC_ALL=zh_CN.UTF-8
-Dfile.encoding=UTF-8
-Dfile.encoding=UTF-8如果你愿意,可以把具体场景发我(命令行?Web?文件读写?日志?),我可以给你更精确的修复方案。