Wie legen Sie die Standard-Kodierung in Jenkins?
Habe ich ein python-script, dass die Ausgänge nicht-ascii-Zeichen.
Es funktioniert von der Kommandozeile (die hat LANG en_US.UTF-8), aber sobald ich versuche, führen Sie es in Jenkins (gestartet von der gleichen shell), schlägt es in der typischen Weise von einem ascii-terminal:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe5' in position 37: ordinal not in range(128)
Habe ich versucht, vor dem script-Aufruf in der "shell Ausführen" build-Schritt wie folgt:
export LANG=en_US.UTF-8
Aber es scheint zu ignorieren, dass. Setzen Sie die folgenden in meinem python-Skript:
print "Encoding = %s" % sys.getdefaultencoding()
Gibt mir diese, egal was ich mache:
Encoding = ascii
So ist es etwas, das mir erlauben wird, zu zwingen, Jenkins UTF-8?
- Ich wäre daran interessiert, eine Allgemeine Antwort auf diese Frage. Ich denke, dass die Python-hack unten funktioniert nicht für Python 3.x...
- Wenn Sie mit Jenkins pipelin verwenden
pipeline { agent {label 'nodename'} environment { LC_ALL = 'en_US.UTF-8' LANG = 'en_US.UTF-8' LANGUAGE = 'en_US.UTF-8' ... }
Du musst angemeldet sein, um einen Kommentar abzugeben.
Niemals Geist, finden Sie heraus, wie es zu tun:
export PYTHONIOENCODING=UTF-8
Wenn Sie möchten, legen Sie die Kodierung auf einer system-Ebene in Ihre Jenkins-installation, können Sie es hinzufügen, wie Globale Eigenschaften von Schlüssel-Wert-paar (Jenkins -> Jenkins Verwalten -> Konfiguration-System) mit
name=LANG
undvalue=<insert your locale here>
(die in meinem Fall gleichen_GB.UTF-8
). So vermeiden Sie, festlegen der locale-Einstellung für jeden Jenkins-job.PYTHONIOENCODING
:UTF-8
als Umgebungsvariable hat schließlich Arbeit.Meine Lösung war: upgrade auf die neueste version von Jenkins. Es scheint die neueste version respektiert die system-locale-Einstellungen. Siehe, zB, dieser patch vielleicht?
In jedem Fall, den Standard-Lieferumfang von Ubuntu 13.10 war veraltet. Ziehen Sie die neueste version von der offiziellen debian-repo behoben, die es für mich!
https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu
export PYTHONIOENCODING=UTF-8
nicht für mich arbeiten. Allerdings
export LC_CTYPE=en_US.UTF-8
haben.
Wenn Sie die Jenkins-Pipeline, müssen Sie die Codierung innerhalb der pipeline:
Andere Lösung ist die Verwendung von Python 3