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-8Java参数,未生效。
临时解决方案
在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编码)。
永久修复
- 编辑Jenkins服务的systemd配置:
sudo systemctl edit jenkins.service - 在打开的配置文件中添加以下内容,同时配置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" - 重新加载systemd配置并重启Jenkins服务:
sudo systemctl daemon-reload sudo systemctl restart jenkins - 验证:进入Jenkins后台的「Manage Jenkins → System Information」,确认
sun.jnu.encoding和file.encoding均显示为UTF-8。
内容的提问来源于stack exchange,提问作者Weir Lee
相关产品推荐
相关产品推荐

