java?-jar啟動參數(shù)設置file.encoding編碼,解決中文亂碼的問題
java -jar啟動參數(shù)設置file.encoding編碼,解決中文亂碼
最終解決辦法
java -Dfile.encoding=utf-8 -jar xxx.jar
起因
公司需要基于Jenkins平臺上,進行一個批量構建的項目開發(fā),就是個一次性可以調(diào)起多個項目的構建,額,先說點題外話,要永遠都記得一點,客戶都是懶得~
BUG:
使用jenkins-client 請求http://jenkins服務器的域名/job/你的構建項目名/api/json接口獲取數(shù)據(jù)(該接口可以獲取某個項目的大部分信息),但坑人的是,本地運行不會亂碼,丟到服務器上就尷尬的一批,看圖
貓膩
部署到服務器上,**控制臺,日志文件,頁面上的中文都沒有亂碼, 直接用瀏覽器訪問上述的jenkins api 接口 也顯示正常 ,唯獨就是代碼里jenkins api 返回的數(shù)據(jù)有亂碼 ** 真的憂桑啊啊啊啊
猜想
是不是對代碼里對reponse 的處理出了問題。額,,果然好像是的,
后臺查出來 本地 的 Charset.defaultCharset() 返回的是 UTF-8 , 而服務器的是GBK簡體中文 ,想哭啊~ 百度了一波 ,查出這個返回值取決于系統(tǒng)的編碼環(huán)境。
解決思路
**改服務器的編碼環(huán)境啦啦啦。 **
嘗試解決
(1)設置了JAVA_TOOL_OPTIONS 系統(tǒng)環(huán)境變量
啟動項目,spring日志里會出現(xiàn)一行 PICK UP JAVA_TOOL_OPTIONS 。。。
則說明生效了。
值得開心的是, 之前那個亂碼問題 解決啦 ,解決啦,值得憂桑的是,
- 框架里的logback 里中文亂碼了,心碎 ;
- jenkins 打包項目 里,涉及到cmd 里的命令 , 參數(shù)傳遞 ,和 日志 輸出 ,中文亂碼了
看來這方法不靠譜,修改的應該是整個環(huán)境的編碼,使用還是要慎重?。?!
(2)最后查到修改某個項目的編碼
注意是某個項目的運行環(huán)境,不是系統(tǒng)的環(huán)境,可以在啟動參數(shù)的時候設定:java -Dfile.encoding=utf-8 -jar xxx.jar,獲取api數(shù)據(jù)亂碼的問題當然是解決了,可控制臺的中文依舊亂碼。。。
再解決問題:logback.xml指定編碼為GBK 。
大膽猜想下,logback 在沒有設置編碼的情況下,默認應該是跟著當前jvm的編碼走的,所以logback的編碼也變成了UTF-8 ,而我系統(tǒng)的cmd窗口輸出是接受的是中文(取決于系統(tǒng)的編碼)。
如下圖所示:
最后把logback輸出到控制臺的編碼改成中文的就解決。
要將logback的編碼和控制臺的編碼一致
就這樣,最終的問題都解決了~~
最后還是有個疑問,解決控制臺亂碼,嘗試著修改cmd窗口的的編碼改為utf-8 (用chcp 65001 ) 和 該系統(tǒng)保持一致,logback.xml 改成utf-8 編碼,并沒啥用??鄲纞
經(jīng)過這次,個人覺得以后的logback.xml里最好明確下編碼格式,和當前整個系統(tǒng)的編碼一致,而不是簡單的一個項目的運行環(huán)境編碼。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java 客戶端向服務端上傳mp3文件數(shù)據(jù)的實例代碼
這篇文章主要介紹了Java 客戶端向服務端上傳mp3文件數(shù)據(jù)的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09SpringBoot實現(xiàn)redis延遲隊列的示例代碼
延時隊列場景在我們?nèi)粘I(yè)務開發(fā)中經(jīng)常遇到,它是一種特殊類型的消息隊列,本文就來介紹一下SpringBoot實現(xiàn)redis延遲隊列的示例代碼,具有一定的參考價值,感興趣的可以了解一下2024-02-02SpringBoot解決循環(huán)調(diào)用問題
作者在將SpringBoot從1.5版本升級至2.6版本,并遷移至阿里云上運行后,遇到了循環(huán)調(diào)用問題,在Jetty容器中運行沒問題,但在Tomcat容器中就出現(xiàn)了循環(huán)引用問題,原因是SpringBoot 2.6不鼓勵循環(huán)引用,暴露出該問題,作者提供了兩種解決思路2024-10-10Java 集合實現(xiàn)分頁的方法(業(yè)務代碼實現(xiàn)分頁)
在Java開發(fā)中,有些場景比較復雜,受限制,不好在sql查詢層面實現(xiàn)分頁,需要在查詢的list結(jié)果后,將list分頁返回,如何實現(xiàn)呢,帶著這個問題一起通過本文學習吧2025-02-02Springboot實現(xiàn)自定義錯誤頁面的方法(錯誤處理機制)
這篇文章主要介紹了Springboot實現(xiàn)自定義錯誤頁面的方法(錯誤處理機制),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01java實現(xiàn)大文件導出的實現(xiàn)與優(yōu)化
這篇文章主要為大家詳細介紹了java實現(xiàn)大文件導出的實現(xiàn)與優(yōu)化的相關資料,文中的示例代碼講解詳細,對我們深入了解java有一定的幫助,感興趣的小伙伴可以了解下2023-11-11