如何在Jenkins中设置默认编码?

14 投票
6 回答
27060 浏览
提问于 2025-04-16 18:03

我有一个Python脚本,它会输出一些非ASCII字符。这个脚本在命令行下运行得很好,因为命令行的语言设置是en_US.UTF-8。但是当我在Jenkins中运行这个脚本时(Jenkins是从同一个命令行启动的),它就出现了问题,表现得像一个只支持ASCII的终端一样。

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe5' in position 37: ordinal not in range(128)

我尝试在“执行Shell”构建步骤中这样调用脚本:

export LANG=en_US.UTF-8

但是,它似乎不管这个设置。我在我的Python脚本中放入以下内容:

print "Encoding = %s" % sys.getdefaultencoding()

无论我怎么做,结果都是这样:

Encoding = ascii

那么,有没有什么办法可以强制Jenkins使用UTF-8呢?

6 个回答

3

如果你在使用Jenkins流水线,你需要在流水线中设置编码,方法如下:

pipeline {
    agent {label 'node name'}
    environment {
        LC_ALL = 'en_US.UTF-8'
        LANG    = 'en_US.UTF-8'
        LANGUAGE = 'en_US.UTF-8'
    }
    stages {
        stage ('XXXX') {
            steps {
                 echo 'Hello'
            }
         }
    }
}
4

如果你想在Jenkins的系统层面上设置编码,可以通过添加一个全局属性的键值对来实现。你可以在Jenkins的管理界面里找到“管理Jenkins”选项,然后选择“配置系统”。在这里,你需要设置一个叫做 LANG 的名称,值则是你想要的地区设置,比如我这里用的是 en_GB.UTF-8。这样做的好处是,你就不需要为每一个Jenkins任务单独设置地区了。

13

没关系,我找到了怎么做的方法:

export PYTHONIOENCODING=UTF-8

撰写回答