温馨提示×

ubuntu中java乱码怎么解

小樊
35
2026-09-19 07:32:42
栏目: 编程语言

在 Ubuntu 里 Java 出现乱码,通常是字符集不一致字体缺失导致的。下面按常见场景给你一套“从快到全”的解决方案。


一、先确认系统语言环境(最常见原因)

locale

正常应类似:

LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8

如果不是 UTF-8,执行:

sudo apt update
sudo apt install locales
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8

然后重启或重新登录


二、给 Java 指定编码(最关键)

运行 Java 时强制使用 UTF-8:

java -Dfile.encoding=UTF-8 -jar yourapp.jar

如果是 Tomcat:

export JAVA_OPTS="-Dfile.encoding=UTF-8"

⚠️ Java 18+ 默认已是 UTF-8,老版本(Java 8/11)容易乱码。


三、终端乱码(Shell / SSH)

1. 终端编码设置

确保终端是 UTF-8

  • GNOME Terminal:右上角 → 首选项 → 编码 → UTF-8
  • SSH 客户端(Xshell / FinalShell / PuTTY):编码设为 UTF-8

2. 测试

echo "中文测试"

如果这里就乱码,说明不是 Java 的问题。


四、Java 日志 / 文件乱码

读文件时指定编码

new InputStreamReader(
    new FileInputStream("file.txt"), 
    StandardCharsets.UTF_8
);

不要写:

new InputStreamReader(in); // 用系统默认编码,容易出错

五、图形界面(Swing / JavaFX)中文方块

这是字体缺失问题。

安装中文字体

sudo apt install fonts-wqy-zenhei fonts-wqy-microhei

然后重启 Java 程序。


六、Tomcat 控制台乱码( catalina.out )

修改:

sudo vim /etc/default/locale

内容:

LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8

并确认:

echo $LANG

七、快速自查清单 ✅

  • [ ] locale 是 UTF-8
  • [ ] java 加了 -Dfile.encoding=UTF-8
  • [ ] 终端编码 UTF-8
  • [ ] 安装了中文字体
  • [ ] 文件读写显式指定 UTF-8

如果你能告诉我:

  • Java 版本(java -version
  • 乱码场景(终端 / 日志 / 界面 / 文件)
  • 是 SSH 还是本地

我可以给你更精准的一行命令解决方案

0