温馨提示×

ubuntu java编译乱码怎么处理

小樊
51
2026-09-22 15:43:45
栏目: 编程语言

在 Ubuntu 下用 Java 编译或运行出现乱码,通常是字符编码不一致导致的(源文件编码、javac 编码、终端编码、程序运行编码不匹配)。下面按常见场景给你解决方案。


一、先确认乱码发生在哪一步

1️⃣ 编译时乱码(javac 报错或注释乱码)

通常是 源文件编码 ≠ javac 默认编码

Ubuntu 下 javac 默认使用 系统编码(一般是 UTF-8),但如果源文件是 GBK,就会乱码。

✅ 解决:显式指定编码

javac -encoding UTF-8 Hello.java

如果是 Windows 写的代码(GBK):

javac -encoding GBK Hello.java

2️⃣ 运行时乱码(System.out.println 输出乱码)

通常是 终端编码 ≠ JVM 编码

查看当前终端编码:

locale

正常应是:

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

如果不是 UTF-8,先修复:

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

运行 Java 时指定编码:

java -Dfile.encoding=UTF-8 Hello

二、Java 源文件本身是乱码

情况 1:Windows 写的 Java 文件

在 Ubuntu 打开是乱码(如中文注释看不了)

查看文件编码:

file Hello.java

如果是 ISO-8859 / GBK,可转换:

iconv -f GBK -t UTF-8 Hello.java > Hello_utf8.java

然后:

javac -encoding UTF-8 Hello_utf8.java

三、IDE(如 IntelliJ / Eclipse)乱码

IntelliJ IDEA

  • File → Settings → Editor → File Encodings
  • 全部设为 UTF-8
  • ✅ 勾选 Transparent native-to-ascii conversion

Eclipse

  • Window → Preferences → General → Workspace
  • Text file encoding → UTF-8

四、推荐的最佳实践(避免以后再乱码)

✅ 统一使用 UTF-8

  • 源文件:UTF-8
  • 编译:javac -encoding UTF-8
  • 运行:java -Dfile.encoding=UTF-8
  • 终端:LANG=*.UTF-8

✅ Maven 项目加配置:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

五、快速自检清单

locale
file YourFile.java
javac -encoding UTF-8 YourFile.java
java -Dfile.encoding=UTF-8 YourClass

如果你愿意,可以把:

  • 报错信息
  • locale 输出
  • file xxx.java 结果

贴出来,我可以帮你精确判断是 编译乱码 / 运行乱码 / 文件编码问题。

0 踩