[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~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM