免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2046 | 回复: 1

SpringMVC JQuery Ajax Get Post请求在Tomcat中乱码解决方案 [复制链接]

论坛徽章:
38
IT运维版块每日发帖之星
日期:2016-04-01 06:20:0015-16赛季CBA联赛之上海
日期:2017-07-19 17:38:4415-16赛季CBA联赛之福建
日期:2017-08-02 09:45:3315-16赛季CBA联赛之山东
日期:2017-08-23 17:34:3615-16赛季CBA联赛之上海
日期:2017-11-14 09:20:5015-16赛季CBA联赛之佛山
日期:2017-12-01 10:26:3815-16赛季CBA联赛之吉林
日期:2018-03-30 12:58:43黑曼巴
日期:2018-07-13 09:53:54ChinaUnix元老
日期:2018-08-03 17:26:0015-16赛季CBA联赛之天津
日期:2018-08-09 10:30:4115-16赛季CBA联赛之北京
日期:2018-10-06 21:39:5715-16赛季CBA联赛之北控
日期:2018-10-29 18:20:34
发表于 2016-08-03 19:41 |显示全部楼层
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>

注意: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格式进行编码,只要正确解码就行了,实在没啥意义。


jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8

论坛徽章:
0
发表于 2016-11-23 18:04 |显示全部楼层
实在解决不了 我都加密一下 ,接收到再解密一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年6月4日~6日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP