如何在Jenkins中设置默认编码?
我有一个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