温馨提示×

ubuntu java乱码怎么解决

小樊
42
2026-09-16 07:55:53
栏目: 编程语言

在 Ubuntu 上遇到 Java 乱码(中文乱码、方框、??、问号等),通常是 字符编码不一致缺少中文字体 导致的。下面按常见场景给你一套排查和解决办法。


一、确认系统编码(最重要)

1. 查看当前编码

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 运行时指定编码(最常见)

1. 运行 Java 程序时加参数

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

或:

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

2. 在代码里固定编码(不要依赖系统)

new InputStreamReader(in, StandardCharsets.UTF_8);
new String(bytes, StandardCharsets.UTF_8);

⚠️ 不要用 new String(bytes)(默认系统编码)


三、终端 / SSH 乱码

1. 终端编码改为 UTF-8

  • Ubuntu 终端:
    右键 → 配置文件 → 兼容性 → 编码 → UTF-8
  • SSH 客户端(Xshell / PuTTY / Terminal):
    • 编码设置为 UTF-8

2. 测试是否终端问题

echo "中文测试"

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


四、Java 图形界面(Swing / AWT)方框乱码

1. 安装中文字体

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

2. 指定字体

Font font = new Font("WenQuanYi Zen Hei", Font.PLAIN, 14);

五、Tomcat / 后端服务乱码

1. Tomcat

bin/catalina.sh 加:

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

2. 页面乱码

HTML / JSP:

<meta charset="UTF-8">
<%@ page pageEncoding="UTF-8" %>

六、快速自检清单 ✅

  • [ ] locale 是 UTF-8
  • [ ] 启动 Java 加了 -Dfile.encoding=UTF-8
  • [ ] 终端编码是 UTF-8
  • [ ] 安装了中文字体
  • [ ] 代码里显式指定 UTF-8

如果你能告诉我:

  • 具体场景(终端 / Web / Swing / 日志)
  • 乱码样子(?? / 方框 / 乱符号)
  • Java 版本

我可以给你更精准的方案。

0