springmvc傳參中文亂碼問題解決

最近在玩云服務(wù)器,搭建微信微信小程序服務(wù)端,微信小程序通過https協(xié)議請(qǐng)求數(shù)據(jù),可是在本地eclipse環(huán)境下調(diào)試,都能返回結(jié)果,但是部署到服務(wù)器上(tomcat容器)卻始終返回不了數(shù)據(jù),最開始沒往亂碼方面想,一直以為是數(shù)據(jù)的問題,經(jīng)過排查數(shù)據(jù),數(shù)據(jù)和本地?cái)?shù)據(jù)庫完全一致,偶然的一次插入操作,發(fā)現(xiàn)插入數(shù)據(jù)庫的中文字段亂碼,這才開始排查是不是接收到的參數(shù)亂碼,經(jīng)過打印入?yún)?,果然是亂碼,于是在網(wǎng)上查找解決方案,由于客戶端發(fā)送的是get請(qǐng)求,容器是tomcat,網(wǎng)上說需要在server.xml中加入U(xiǎn)RIEncoding="utf-8",即

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>

但是修改過后,還是亂碼,再繼續(xù)排查,原來自己配置了ssl的,需要在ssl的配置中也加入U(xiǎn)RIEncoding="utf-8",即

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" 
        maxThreads="150" scheme="https" secure="true"
        keystoreFile="conf/***.***.***.jks"
        keystorePass="********************"
        clientAuth="false" sslProtocol="TLS" URIEncoding="utf-8"/>

重啟tomcat,再次發(fā)送請(qǐng)求,問題終于解決。總結(jié)如果是tomcat容器又配置了ssl且是get請(qǐng)求的話,如果出現(xiàn)了亂碼,建議往這方面排查。
網(wǎng)上也有說明,如果是post的請(qǐng)求,需要在web.xml中配置一個(gè)字符過濾器,即

   <!-- Spring字符集過濾器 -->  
   <filter>  
       <filter-name>SpringEncodingFilter</filter-name>  
       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
       <init-param>  
           <param-name>encoding</param-name>  
           <param-value>UTF-8</param-value>  
       </init-param>  
       <init-param>  
           <param-name>forceEncoding</param-name>  
           <param-value>true</param-value>  
       </init-param>  
   </filter>  
   <filter-mapping>  
       <filter-name>SpringEncodingFilter</filter-name>  
       <url-pattern>/*</url-pattern>  
   </filter-mapping>  

以上本要曾經(jīng)遇到過的坑,希望對(duì)大家有用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容