powershell - 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 ä
...
解决方案
输出ä
是将 UTF-8 编码字母解释ä
为 ANSI 字符串(当前代码页)的结果。作为实验,启动 Notepad++,将编码设置为“ANSI”,粘贴ä
,将编码设置为“UTF-8”(不转换!)。你会看到信ä
。
bat
和powershell
步骤都有一个参数encoding
。通过'UTF-8'
以获得正确的输出:
bat encoding: 'UTF-8', script: "echo ä"
推荐阅读
- css - 是否可以在 css 文件中打印多个 @media
- asp.net-core - 在实体框架中使用两个不同的连接字符串进行迁移
- javascript - 为什么我的 React 程序没有得到最新版本的状态变量?
- ringcentral - 是否可以查询单个 RingCentral 用户是否启用了自动通话录音 (ACR)?
- react-native - 没有开发的 React-native 故事书。服务器
- apache-spark - 重新分区后引发非确定性结果
- java - Selenium 使用 webdriver.firefox.marionette 的 java 问题
- sql - 将数据从 SQL Server 导入到 R
- node.js - 我的 NodeJs 应用程序出现在终端中但没有通过 url 连接到数据库的任何原因?
- javascript - 为什么 create-react-app 中的这个 ESLint 覆盖文件没有发现错误?