温馨提示×

ubuntu java乱码怎么处理

小樊
45
2026-09-04 01:19:23
栏目: 编程语言

在 Ubuntu 下 Java 出现乱码,通常是字符编码不一致导致的(Java 默认编码、终端编码、文件编码、系统 locale 不一致)。下面按常见场景给你一套处理方案。


一、先确认系统 locale(最重要)

locale

如果不是 UTF-8,建议改成 UTF-8:

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

或者直接用:

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

(推荐 UTF-8,不一定非要是中文)


二、确认 Java 默认编码

java -XshowSettings:properties -version 2>&1 | grep encoding

或:

java -Dfile.encoding=UTF-8 YourMainClass

如果看到不是 UTF-8(比如 ANSI_X3.4-1968),就会乱码。


三、运行 Java 时强制指定编码(最常用)

1️⃣ 命令行运行

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

2️⃣ IDE(IDEA / Eclipse)

  • Run → Edit Configurations
  • VM options 加:
-Dfile.encoding=UTF-8

四、代码中显式指定编码(强烈推荐)

不要依赖默认编码

读文件

new InputStreamReader(
    new FileInputStream("a.txt"),
    StandardCharsets.UTF_8
)

写文件

new OutputStreamWriter(
    new FileOutputStream("b.txt"),
    StandardCharsets.UTF_8
)

字符串转换

new String(bytes, StandardCharsets.UTF_8);

五、终端 / SSH 乱码

如果你是在 终端或 SSH 里看到乱码:

  • 终端编码设置为 UTF-8
  • SSH 客户端(Xshell / FinalShell / Putty)编码设为 UTF-8
  • 确认:
echo $LANG

六、日志乱码(logback / log4j)

logback.xml

<encoder>
    <pattern>%d %msg%n</pattern>
    <charset>UTF-8</charset>
</encoder>

启动参数

-Dfile.encoding=UTF-8

七、常见坑总结

问题 解决
控制台中文乱码 -Dfile.encoding=UTF-8
文件读写乱码 指定 UTF-8
打包后乱码 编译时加 -encoding UTF-8
Docker 里乱码 镜像里装 locales
服务器无中文字体 安装 fonts-wqy-zenhei

八、编译时也别忘了

javac -encoding UTF-8 *.java

如果你能告诉我:

  • 控制台 / 文件 / 数据库 / 网页 乱码?
  • Java 版本(8 / 11 / 17)?
  • 是否在 Docker?

我可以给你更精确的一行命令方案。

0