[英]How do you set the default encoding in Jenkins?
我有一個輸出非ascii字符的python腳本。 它在命令行(有en en_US.UTF-8)下工作正常,但是一旦我嘗試在Jenkins中運行它(從同一個shell啟動),它就會以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嗎?
沒關系,發現怎么做:
export PYTHONIOENCODING = UTF-8
如果要在Jenkins安裝中在系統級別設置編碼,可以將其添加為全局屬性鍵值對(Jenkins - > Manage Jenkins - > Configure System),其name=LANG
, value=<insert your locale here>
(在我的情況下等於en_GB.UTF-8
)。 這樣您就可以避免為每個Jenkins作業設置區域設置。
我的解決方案是: 升級到最新版本的Jenkins。 似乎最新版本尊重系統區域設置。 例如,看看這個補丁可能嗎?
在任何情況下,Ubuntu 13.10附帶的默認值都已過期。 從他們的官方debian repo中刪除最新版本為我修復了它!
https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu
export PYTHONIOENCODING=UTF-8
不適合我。 然而,
export LC_CTYPE=en_US.UTF-8
沒有。
如果您使用的是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'
}
}
}
}
另一種解決方案是使用Python 3
brew update
brew install pyenv
pyenv install 3.7.3
pyenv local 3.7.3
make virtualenv
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.