SpringMVC JQuery Ajax Get Post请求在Tomcat中乱码解决方案
SpringMVC 3.12
JQuery 1.8.2
Tomcat 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 >
< 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" />
connectionTimeout ="20000"
redirectPort ="8443" URIEncoding ="UTF-8" />
3、如果你喜欢GBK,那么解决以上编码问题,对你来说是一场噩梦,你需要通过复杂的过滤器处理Tomcat以及修改Spring的一些编码方式,甚至一些依赖的库也会导致乱码(如dom4j)。这时候,问题往往变得很棘手,但并非不能解决----很费劲。
因此建议包括数据库,都用utf-8编码,简单省劲儿。
4、其实编码就是数据传输的格式,真无所谓的事情,你要是喜欢,你还可以用MP3、MP4格式进行编码,只要正确解码就行了,实在没啥意义。
本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/1036209,如需转载请自行联系原作者