从Linux容器内运行的声明性管道输出字符时,是否可以更改编码以匹配终端的真实输出?即
├── file1 +-- file1
├── file2 +-- file2
└── file3 +-- file3
^Formatting I want ^Formatting I get
。
我尝试将以下参数传递给我的Docker代理:
-e JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
-e LC_ALL="en_US.UTF-8"
。
结合:
sh returnStdout: true, script: " "
得到“-”代替“ +-”,这似乎是“├──”的ANSI编码。
我正在使用ansiColor选项,但这似乎并没有太大帮助。
。
我看到了类似的问题,但是我不确定如何在管道中实现该解决方案。
答案 0 :(得分:1)
您可以使用Jenkins II将编码更改为UTF-8。 去 Jenkins -> 管理Jenkins -> 配置系统-> 全局属性
并添加两个分别具有值JAVA_TOOL_OPTIONS
和LANG
的环境变量-Dfile.encoding=UTF-8
和en_US.UTF-8
添加这些内容后,您可能需要重新启动Jenkins。
参考:https://www.linkedin.com/pulse/how-resolve-utf-8-encoding-issue-jenkins-ajuram-salim/
更新:
,或者您可以更新<arguments>
文件中的jenkins.xml
。
例如
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Dfile.encoding=UTF-8 -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>
答案 1 :(得分:1)
这是cloudbees的官方回答。不幸的是,所有这些都不适合我。
将它们添加到master和代理中的JVM Arguments中-
-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8