Jenkins maven 構建亂碼,修改file.encoding系統變量編碼爲UTF-8

一切都是windows的控制檯默認編碼GBK問題java

情景:

使用jenkins構建,console 輸出的中文亂碼。代碼編碼格式是utf-8,由於Jenkins會默認讀取當前系統的編碼格式,致使構建日誌亂碼和selenium自動化測試輸入的中文亂碼。linux

控制檯輸出亂碼windows

 

摸索

不能忍,果斷百度一下,按照設置全局配置那裏設置LANG :zn_CH.utf-8 無效。 測試

在jenkins下的jenkins.xml設置什麼啓動爲utf-8也是無效。編碼

可是查找資料期間發現,jenkins系統管理的系統信息 
這裏寫圖片描述spa

想到另外一臺linux下,未發現該問題,上去看看,裏面有一個(大約是第三行)file.encoding UTF-8,而我本地的windows則是file.encoding GBK..net

再往下拉,仔細看還有一個sun.jnu.encoding UTF-8 
而我本地也是sun.jnu.encoding GBK日誌

我以爲就是這裏的問題啊。code

這個是java層面的編碼問題,因此在jenkins 裏設置半天並沒效果。 
查了下java修改file.enciding UTF-8的方法。xml

在系統變量裏添加啓動參數: 
1.打開環境變量設置 
2.注意是新建,不是在什麼path中新加, 
直接新建一個變量名爲JAVA_TOOL_OPTIONS 
變量值爲-Dfile.encoding=UTF-8 
保存並重啓jenkins。

再次查看咱們的「系統管理」-->「系統信息」發現已是UTF-8 了。

等等,你可能說,那個sun.jnu.encoding還沒改呢。

那這倆有什麼區別呢

file.encoding主要管理的是文件中的編碼 
sun.jnu.encoding 主要負責文件名類的編碼

PS:因此這裏也提示咱們,若是依賴java或者其餘一些環境的軟件,命名及其安裝路徑儘可能國際化一點,畢竟中文不少時候出現錯誤十分的惱火。

sun.jnu.encoding 的修改還沒找到方法,如知道,請告知我。


從新構建一下,一半喜樂,一半憂傷。我程序中輸出的中文字符正常顯示了。可是,系統提示的那個「錯誤,該進程沒有找到」的已經變成了亂碼。WTF,其實不難理解,由於那個信息是windows反饋給咱們的,不在咱們代碼中,那編碼模式必然是默認的GBK,這裏實在是不知道怎麼去控制了。尷尬,難道就不能兩全嗎?!

搞不動了,linux下就沒這麼妖了,由於默認的就都是utf-8。

參考:http://blog.csdn.net/sinat_21302587/article/details/68061204

相關文章
相關標籤/搜索