You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins中sun.jnu.encoding默认值为ANSI_X3.4-1968的问题求助

Jenkins编码问题排查与修复

问题概述

Linux系统locale已配置为en_US UTF-8,但Jenkins系统信息中sun.jnu.encoding始终显示为ANSI_X3.4-1968,导致部分字符乱码。涉及版本:Java 17.0.8、Apache Maven 3.8.5、Jenkins 2.414.1。

已尝试无效操作

  • 通过sudo systemctl edit jenkins.service添加-Dsun.jnu.encoding=utf-8 Java参数,未生效。

临时解决方案

在Jenkins任务中添加环境变量配置,可临时规避乱码问题:

environment {
    LC_ALL = 'en_US.UTF-8'
    LANG    = 'en_US.UTF-8'
    LANGUAGE = 'en_US.UTF-8'
}

根因分析与永久修复步骤

根因

通过systemd启动Jenkins时,默认不会加载系统的locale环境变量,Java进程无法获取正确的编码配置,最终fallback到ANSI_X3.4-1968(ASCII编码)。

永久修复

  1. 编辑Jenkins服务的systemd配置:
    sudo systemctl edit jenkins.service
    
  2. 在打开的配置文件中添加以下内容,同时配置locale和Java编码参数:
    [Service]
    Environment="LANG=en_US.UTF-8"
    Environment="LC_ALL=en_US.UTF-8"
    Environment="JAVA_OPTS=-Dsun.jnu.encoding=utf-8 -Dfile.encoding=utf-8"
    
  3. 重新加载systemd配置并重启Jenkins服务:
    sudo systemctl daemon-reload
    sudo systemctl restart jenkins
    
  4. 验证:进入Jenkins后台的「Manage Jenkins → System Information」,确认sun.jnu.encoding和file.encoding均显示为UTF-8。

内容的提问来源于stack exchange,提问作者Weir Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 15:52:17