测试环境:

        操作系统:Windows 10

        Jenkins版本:Jenkins 2.375.1

问题现象:

搭建Jenkins的流水线项目,在Jenkinsfile脚本中想打印中文,运行pipeline后,在Jenkins的Console Output出现乱码

问题原因:

出现Jenkins控制台打印中文乱码问题,通常是由于编码设置不正确导致的。

解决办法:

在pycharm中将Jenkinsfile文件的的编码由UTF-8改成GBK,如下图(左),点击红框区域,把UTF-8改成GBK,然后推送至远程仓库,重新执行Jenkins中的pipeline项目后,控制台输出正常,如下图(右)。

                                 ​​​​​​​

   为什么Jenkinsfile从UTF-8改成GBK编码格式后,执行pipeline控制台输出不乱码了?

        首先,UTF-8是一种通用的字符编码格式,支持包括中文在内的多种字符,而GBK是中文字符编码格式,专门用于支持中文字符。      

        其次,Jenkins使用JVM来运行Pipeline,而JVM的默认编码取决于操作系统或Jenkins启动脚本的设置。

        如果Jenkinsfile以UTF-8编码保存,而Jenkins JVM使用的是GBK编码,那么在控制台输出中文时就可能出现乱码,因为两者的编码格式不匹配。 

        如果Jenkinsfile是以GBK编码保存的,并且Jenkins JVM(file.encoding)使用的也是GBK编码,那么在控制台输出中文字符时就不会出现乱码,因为它们的编码是一致的。

        在Jenkins>Manage Jenkins>System Information界面,可以看到Jenkins JVM的编码是什么,如下图所示。

所以,针对我的问题场景,将Jenkinsfile的编码格式由UTF-8改成GBK后就可以了

为了避免控制台输出中文乱码问题,可以采取以下几种方式:

        1.将Jenkinsfile的编码格式设置为UTF-8,并确保Jenkins JVM也使用UTF-8编码。这样可以保持一致,支持更广泛的字符集,包括中文字符。

        2.将Jenkinsfile的编码格式设置为GBK,并确保Jenkins JVM也使用GBK编码。这样也可以保持一致,但注意使用GBK编码可能会限制其他非中文字符的支持。

        3.如果需要同时支持多种字符集,可以将Jenkins JVM的编码设置为UTF-8,并将Jenkinsfile的编码格式也设置为UTF-8。这样可以保持一致,并支持更广泛的字符集。

        综上所述,为了避免中文控制台输出乱码,确保Jenkinsfile的编码格式和Jenkins JVM的编码格式保持一致即可。通常情况下,使用UTF-8编码是较为常见和推荐的做法,因为它支持更广泛的字符集。

——————————————————————————————————————————
以下是ChatGPT提供的解决的思路,尝试修改配置,但没有解决我的问题,仅供其他场景参考!

1.设置Jenkins编码: 登录到Jenkins并导航到Jenkins的全局配置页面。在“Global properties”部分,添加一个新的环境变量,将名称设置为JAVA_TOOL_OPTIONS,并将值设置为-Dfile.encoding=UTF8。保存配置后,重启Jenkins服务,并重新运行流水线,看看是否解决了中文乱码问题。

2.修改Jenkins启动脚本: 在Jenkins的启动脚本中,添加-Dfile.encoding=UTF8来设置Jenkins的编码。具体操作步骤可能因为不同的安装方式而有所不同。如果你是通过war包运行Jenkins,可以修改启动命令为类似以下形式:

java java -Dfile.encoding=UTF8 -jar jenkins.war

3.检查系统编码: 确保运行Jenkins的系统编码设置是正确的。在Windows系统中,可以通过控制面板的“区域设置”来检查系统的编码设置。确保它设置为UTF-8 或者兼容 UTF-8 的编码。

4.检查终端编码: 如果你是通过远程终端连接到Jenkins主机并运行流水线,确保终端的编码设置也是UTF-8。

尝试上述方法后,重新运行流水线,看看是否解决了中文乱码问题。如果问题仍然存在,你可能需要进一步检查Jenkins的配置和系统编码设置,确保它们都正确地支持UTF-8 编码,以便在控制台正确地显示中文字符。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐