我如何在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 ä
...
输出ä
是UTF-8编码字母ä
的字节序列,解释为ANSI字符串(当前代码页)。作为实验,启动Notepad ++,将编码设置为“ ANSI”,粘贴ä
,将编码设置为“ UTF-8”(不转换!)。您会看到字母ä
。
bat
和powershell
两者的步骤都有一个encoding
参数。传递'UTF-8'
以获得正确的输出:
bat encoding: 'UTF-8', script: "echo ä"