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