[Jenkins]Console Output中文显示问号的问题解决

------------------------------------------------------

如需转载,请注明出处。

文章链接:https://www.cnblogs.com/dzblog/p/10342074.html

------------------------------------------------------

问题

一觉起来,发现控制台输出的中文是????。

 

尝试解决

参考了网上的解决方法,修改Jenkins全局属性,发现还是解决不了。

查找原因

经过几个小时的摸索,发现同一个job在不同的slave机器上表现不同。

比如execute shell里只有一句话

echo '中文'

Slave1

echo '??'

Slave2

echo $'中�\226\207'

Slave3

echo '中文'

可以看出是因为Jenkins的原因,而是因为Slave1机器的某个设置,影响到了控制台的输出。

解决

1. 检查terminal所用shell

➜  ~ echo $SHELL
/bin/zsh

2. 在terminal里输入中文,尝试echo '中文'

➜  Home echo '<00e4><00b8><00ad><00e6><0096><0087>'
中文

发现无法正常显示。

3. 在terminal里输入locale,查看

➜  ~ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

发现LANG和LC_ALL均为空。

4. 编辑 vim ~/.zshrc文件

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

要使修改立即生效,需在终端输入 source ~/.zshrc

5. 编辑 vim ~/.bash_profile文件

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

要使修改立即生效,需在终端输入 source ~/.bash_profile

6. 重新打开Terminal,检查locale

➜  Home locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

发现LANG和LC_ALL已经不为空了。

7. 再次构建同一个Job,检查控制台输出。

 

可以看出已经正常显示中文了,问题解决。

 

cheers~

posted @ 2019-01-31 15:09  疲惫的豆豆  阅读(3365)  评论(1编辑  收藏  举报