【问题标题】:How do you set the default encoding in Jenkins?如何在 Jenkins 中设置默认编码?
【发布时间】:2011-08-29 21:24:03
【问题描述】:

我有一个输出非 ascii 字符的 python 脚本。 它在命令行中运行良好(具有 LANG 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 吗?

【问题讨论】:

  • 我对这个问题的更一般的答案感兴趣。我认为下面的 Python hack 不适用于 Python 3.x...
  • 如果您使用 Jenkins 管道,请使用 pipeline { agent {label 'nodename'} environment { LC_ALL = 'en_US.UTF-8' LANG = 'en_US.UTF-8' LANGUAGE = 'en_US.UTF-8' ... }

标签: python encoding utf-8 ascii jenkins


【解决方案1】:

没关系,知道怎么做:

export PYTHONIOENCODING=UTF-8

【讨论】:

  • 你在詹金斯哪里设置的?
  • 在调用 python 脚本之前,在“执行 shell”构建步骤中添加该行。 Python 不会查看 LANG 环境变量,但会查看 PYTHONIOENCODING 变量。
  • 您不必为每个脚本都这样做。而是在 Jenkins > 管理 Jenkins > 配置系统 > 环境变量 > 添加中将 PYTHONIOENCODING 设置为 UTF-8。无需重启 Jenkins 即可生效。
【解决方案2】:

如果您想在 Jenkins 安装中设置系统级别的编码,您可以使用 name=LANGvalue=<insert your locale here> 将其添加为全局属性键值对(Jenkins -> Manage Jenkins -> Configure System) (在我的情况下等于en_GB.UTF-8)。这样您就可以避免为每个 Jenkins 作业设置语言环境。

【讨论】:

  • 对于 Jenkins 2.60.2:在这里尝试了所有选项之后,我开始尝试组合。将PYTHONIOENCODING:UTF-8 存储为环境变量终于奏效了。
  • 谢谢 TemporalWolf,它为我解决了这个问题。我完全被卡住了一段时间。
【解决方案3】:

如果您使用的是 Jenkins Pipeline,则需要将管道内的编码设置为:

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】:

    export PYTHONIOENCODING=UTF-8

    对我不起作用。然而,

    export LC_CTYPE=en_US.UTF-8

    做了。

    【讨论】:

      【解决方案5】:

      我的解决方案是:升级到最新版本 Jenkins。似乎最新版本尊重系统区域设置。看看,例如,this patch 可能吗?

      无论如何,Ubuntu 13.10 附带的默认设置已经过时。从他们的官方 debian repo 中拉下最新版本已为我修复了它!

      https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu

      【讨论】:

        【解决方案6】:

        另一种解决方案是使用 Python 3

        brew update
        brew install pyenv
        pyenv install 3.7.3
        pyenv local 3.7.3
        make virtualenv
        

        【讨论】:

        • 这个错误只会出现如果你使用的是Python 3,所以这不会有太大帮助。
        猜你喜欢
        • 2018-01-26
        • 2010-10-02
        • 1970-01-01
        • 2011-05-27
        • 2016-03-13
        • 1970-01-01
        • 2013-02-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多