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


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

情景:

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

控制台輸出亂碼

 

摸索

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

在jenkins下的jenkins.xml設置什么啟動為utf-8也是無效。

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

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

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

我覺得就是這里的問題啊。

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

在系統變量里添加啟動參數: 
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


免責聲明!

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



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