首页 > 解决方案 > Jenkins Pipeline bat / powershell 编码 - 显示变音符号

问题描述

如何在通过 jenkins 管道脚本调用的 windows bat / powershell 中显示德语变音符号?

即使我更改了代码页,在所有情况下我都会得到相同的错误结果:ä而不是ä. 我已经定义了全局环境变量LC_ALL = 'de_DE.UTF-8'LANG = 'de_De.UTF-8'并且LANGUAGE = 'de_DE.UTF-8'在 jenkins 中,但它没有改变任何东西。

感谢您的帮助和回复!

测试用例:

#!/usr/bin/env groovy

pipeline {
    agent any

    stages {
        stage ('Test') {
            steps {
                echo "batch ----------"
                bat "chcp & echo ä"
                bat "chcp 850 & echo ä"
                bat "chcp 1252 & echo ä"

                echo "powershell ------"
                powershell "chcp; echo ä"
                powershell "chcp 850; echo ä"
                powershell "chcp 1252; echo ä"
            }
        }
    }
}

输出:

...
batch ----------
11:21:43  [Pipeline] bat
11:21:44  
11:21:44  XXX\pipeline_test1>chcp   & echo ä 
11:21:44  Active code page: 850
11:21:44  ä
11:21:44  [Pipeline] bat
11:21:44  
11:21:44  XXX\pipeline_test1>chcp 850   & echo ä 
11:21:44  Active code page: 850
11:21:44  ä
11:21:44  [Pipeline] bat
11:21:44  
11:21:44  XXX\pipeline_test1>chcp 1252   & echo ä 
11:21:44  Active code page: 1252
11:21:44  ä
11:21:44  [Pipeline] echo
11:21:44  powershell ------
11:21:44  [Pipeline] powershell
11:21:46  Active code page: 65001
11:21:46  ä
11:21:46  [Pipeline] powershell
11:21:47  Active code page: 850
11:21:47  ä
11:21:47  [Pipeline] powershell
11:21:49  Active code page: 1252
11:21:49  ä
...

标签: powershellbatch-fileencodingcommand-linejenkins-pipeline

解决方案


输出ä是将 UTF-8 编码字母解释ä为 ANSI 字符串(当前代码页)的结果。作为实验,启动 Notepad++,将编码设置为“ANSI”,粘贴ä,将编码设置为“UTF-8”(不转换!)。你会看到信ä

batpowershell步骤都有一个参数encoding。通过'UTF-8'以获得正确的输出:

bat encoding: 'UTF-8', script: "echo ä"

推荐阅读