Jenkins Pipeline bat / powershell编码-显示变音符号

问题描述 投票:0回答:1

我如何在Windows bat / powershell中显示通过德国詹金斯管道脚本调用的德语变音符号?

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

感谢您的帮助和答复!

测试用例:

#!/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  ä
...
powershell batch-file encoding command-line jenkins-pipeline
1个回答
0
投票

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

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

bat encoding: 'UTF-8', script: "echo ä"
© www.soinside.com 2019 - 2024. All rights reserved.