前言
不知不覺已經(jīng)入java坑1年半了,看著大牛們的技術(shù)博客,對于自己喜歡的東西一直都只有在Evernote上記筆記的習慣,好像不是很喜歡寫出來分享給大家。今天看到這個問題,好幾次遇見了,卻一直沒有梳理??赡芟麓斡鲆娺@個問題,還是會google別人的文章,想想還是自己寫下現(xiàn)在的問題和解決思路吧。
問題
用IDEA, 在跑JavaWeb服務(wù)測試時, 發(fā)現(xiàn)一個很奇怪的問題, 遠程調(diào)用對方接口的時候, 傳入的中文參數(shù)進入對方的數(shù)據(jù)庫的時候會亂碼。
解決之路
再三確定對方工程師自己接口字符格式和數(shù)據(jù)庫格式是否一致時,對方確認說都是Utf-8?;诔绦騿T之間的不信任,討取對方接受數(shù)據(jù)的代碼,查看代碼格式,發(fā)現(xiàn)的確是這樣。于是開始檢測自己的HTTP的POST調(diào)用是否設(shè)置錯誤編碼格式,發(fā)現(xiàn)使用Utf-8,用static main方法直接測試對方接口,得到結(jié)果是中文入庫不亂碼了。然后啟動Tomcat運行,繼續(xù)測試發(fā)現(xiàn)同樣的參數(shù)還是亂碼。推測可能是Tomcat服務(wù)器的編碼格式不對會導(dǎo)致這個中文亂碼,google發(fā)現(xiàn)需要在Tomcat的conf下的server.xml中Connector標簽中加入URIEncoding="UTF-8"。重啟服務(wù)后調(diào)用接口發(fā)現(xiàn)仍是中文亂碼。沒有辦法獨立解決,于是將這個問題和同組人員討論,有個人認為不可能不信邪于是從git上download下代碼跑了一遍,發(fā)現(xiàn)中文入庫也不亂碼了。
當時覺得不可思議,自己再跑一遍發(fā)現(xiàn)還是亂碼,在百思不得其解之中,前輩發(fā)話了,應(yīng)該是你的IDE有問題,和同事一比較發(fā)現(xiàn)的確用了不一樣的IDE。于是上網(wǎng)google,發(fā)現(xiàn)了一片文章,標題就是IntelliJ IDEA運行tomcat項目編碼錯誤, 及如何指定tomcat編碼。上面講了如何處理這個問題。
解決方案
Run/Debug Configuration -> Tomcat Server -> Tomcat 7, 在VM Options里面加上 -Dfile.encoding=UTF-8 并應(yīng)用

以上更改后, 控制臺輸出會亂碼, 還需要將IDEA的啟動環(huán)境也配成UTF-8, 在IDEA安裝目錄下, 打開 idea64.exe.vmoptions , 最后一行加上 -Dfile.encoding=UTF-8。

總結(jié)
對于吃飯的IDE還是要多多了解啊,工欲善其事,必先利其器。