SpringMVC JQuery Ajax Get Post請求在Tomcat中亂碼解決方案 SpringMVC 3.12JQuery 1.8.2Tomcat 6.0.35 1、亂碼很煩人,Spring mvc的@Responsebody返回資料如果不經過特殊處理,總會發生亂碼,針對目前的3.1.2版本。 這個解決方式可以通過配置內部編碼機制來解決 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=utf-8</value>
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.ResourceHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"/>
</list>
</property>
</bean> 注意:Spring mvc內部,預設的編碼只有 UTF-8、iso-8859-1 我喜歡用UTF-8,因為JQuery等發送資料也是UTF-8模式,很多開源組件都這樣,這裡就統一成UTF-8了。 經過上面的配置後,從後台返回給頁面的資料就不是亂碼。 2、在JQuery ajax的get方式請求時候,發送給背景中文會是亂碼。這個亂碼的原因和Tomcat有關係,需要指定tomcat發送資料編碼格式為UTF-8,預設的是iso-8859-1。指定方式是,在Connector上加上一個配置屬性:URIEncoding="UTF-8" 加上後,整個接點預設的配置為: <Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/> 3、如果你喜歡GBK,那麼解決以上編碼問題,對你來說是一場噩夢,你需要通過複雜的過濾器處理Tomcat以及修改Spring的一些編碼方式,甚至一些依賴的庫也會導致亂碼如dom4j)。這時候,問題往往變得很棘手,但並非不能解決----很費勁。 因此建議包括資料庫,都用utf-8編碼,簡單省勁兒。 4、其實編碼就是資料轉送的格式,真無所謂的事情,你要是喜歡,你還可以用MP3、MP4格式進行編碼,只要正確解碼就行了,實在沒啥意義。
本文出自 “熔 岩” 部落格,轉載請與作者聯絡!