商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 如何解决Ubuntu下Java乱码问题

如何解决Ubuntu下Java乱码问题

  发布于2026-07-04 阅读(0)

扫一扫,手机访问

如何解决Ubuntu下Ja va乱码问题

Ubuntu下Ja va乱码,说到底,绝大多数情况就两个原因:要么是系统字符编码和Ja va程序用的编码没对上,要么是系统里压根儿就没有能显示中文的字体。下面这套方案,基本覆盖了从系统到代码、从本地到服务器的所有常见场景,按顺序来,大概率能解决。

如何解决Ubuntu下Ja va乱码问题

1. 检查并设置系统字符编码为UTF-8

先把系统编码和Ja va程序编码统一起来,推荐都用UTF-8。怎么查?打开终端,输入:

locale

如果输出里LANGLC_ALL这些变量不是UTF-8结尾(比如zh_CN.UTF-8),那就得改。临时改一下:

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

想要永久生效,把上面两行加到~/.bashrc~/.profile末尾,然后执行source ~/.bashrc让配置生效。

2. 安装中文字体

Ubuntu默认不带中文字体,这事儿得手动补上。常用的文泉驿微米黑、正黑、宋体,一条命令搞定:

sudo apt update
sudo apt install ttf-wqy-microhei ttf-wqy-zenhei ttf-simsun

装完后字体文件会乖乖待在/usr/share/fonts/truetype/目录下。

3. 配置Ja va字体fallback目录

为了让Ja va知道系统里有哪些中文字体可用,需要在JDK/JRE的字体配置目录下建一个fallback目录,再把中文字体链接进去:

cd $JA VA_HOME/jre/lib/fontconfig
# $JA VA_HOME是JDK安装路径,比如/usr/lib/jvm/ja va-11-openjdk-amd64
sudo mkdir fallback
sudo ln -s /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc fallback/wqy-zenhei.ttc
# 链接文泉驿正黑字体
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv

这一步做完,Ja va在显示中文时就会优先使用fallback目录里的字体,乱码基本就解决了。

4. 启动Ja va程序时指定字符编码

通过JVM参数-Dfile.encoding强制Ja va使用UTF-8编码,覆盖掉默认的GBK或其他编码:

ja va -Dfile.encoding=UTF-8 -jar yourapp.jar

如果是Tomcat,在catalina.sh里加上:

JA VA_OPTS="$JA VA_OPTS -Dfile.encoding=UTF-8"

这样服务器启动时就会带上这个参数。

5. 修改Ja va代码中的字符编码

在读写文件或网络流时,显式指定编码是最稳妥的做法——别再依赖系统默认编码了:

// 读取文件(指定UTF-8编码)
try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("input.txt"), "UTF-8"))) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

// 写入文件(指定UTF-8编码)
try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("output.txt"), "UTF-8"))) {
    writer.write("中文内容");
} catch (IOException e) {
    e.printStackTrace();
}

这个方法能从根本上杜绝文件操作里的乱码问题。

6. 配置IDE的字符编码

如果用的是Eclipse或IntelliJ IDEA,记得把IDE的编码也设成UTF-8:

  • Eclipse:Window → Preferences → General → Workspace,把“Text file encoding”改成UTF-8
  • IntelliJ IDEA:File → Settings → Editor → File Encodings,把“Global Encoding”和“Project Encoding”都设成UTF-8,并且勾选“Transparent native-to-ascii conversion”。

7. 处理Tomcat的URI编码(如适用)

如果Ja va程序跑在Tomcat上,还得改一下server.xml里的Connector配置,把URI编码指定为UTF-8:

另外,在web.xml里加一个字符编码过滤器,确保请求和响应的编码一致:


    setCharacterEncodingFilter
    org.apache.catalina.filters.SetCharacterEncodingFilter
    
        encoding
        UTF-8
    
    
        forceEncoding
        true
    


    /*
    REQUEST
    FORWARD

以上七步,基本覆盖了Ubuntu下Ja va乱码的常见场景。如果按流程走完还乱码,那大概率是应用程序里硬编码了某种编码格式(比如new String(bytes, "GBK")),或者某个第三方库偷偷覆盖了全局编码设置——这时候就得去翻代码和依赖了。

本文转载于:https://www.yisu.com/ask/97369061.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注