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