1. 程式人生 > >Jenkins maven 構建亂碼,修改file.encoding系統變量編碼為UTF-8

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

out selenium 可能 odi 沒有 linu 分享 log image

一切都是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

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