最近寫了一個查詢接口,利用swagger測試,發現沒數據,后來拿sql直接去數據庫查,哎??!!!怎么有數據,好吧debug,發現傳入的參數亂碼了。
方法一:
於是乎我開始百度,找到了一個方法,比較麻煩。原理就是,把傳進來的參數,從編碼格式A(A是容器的默認編碼格式),轉換為UFT-8。上代碼。
try { productName = new String(userName.getBytes("ISO-8859-1"), "UTF-8"); paramMap.put("productName", productName); } catch (UnsupportedEncodingException e){ LOGGER.info("UnsupportedEncodingException:", e); }
當然這里只粘貼了部分代碼,userName就是傳入的參數。
果然成功了,參數一"ISO-8859-1" --代表你所用容器的編碼格式,這時用的tomcat,參數二--"UTF-8"-代表,你希望參數,轉換成那種編碼格式。
但是,后來我覺得tomcat啟動太慢,換用了jetty,jetty默認編碼格式就是“utf-8”呀,還是用上邊代碼,把 "ISO-8859-1"轉“UTF-8”,當然出問題了,那么,就方法二吧
方法二:
人呀,坐到什么位置是有原因的,技術總監出馬,一個注解就解決,---produces="application/json;charset=utf-8",代碼沒啥技術難度,把注解加載RequestMapping后邊就可以了,不貼那么多代碼
@RequestMapping(value = "/getUserDetail", method = RequestMethod.POST, produces="application/json;charset=utf-8" )