springmvc 处理http get/post请求中文乱码的问题
web.xml中的编码设置
<filter>
<filter-name>CharacterEncoding</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>CharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
但这个设置是针对POST请求的,tomacat对GET和POST请求处理方式是不同的,要处理针对GET请求的编码问题,则需要改tomcat的server.xml配置文件,如下:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
改为:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>
最关键的点在这里:如果你是更改的tomcat安装目录的server.xml配置文件,那么在用eclipse运行项目时会发现配置没起作用,其实是因为eclipse在运行项目时是用的eclipse中配置的tomcat,那么问题就好解决了,打开eclipse中的tomcat配置文件,如下,修改即可。
注:配置useBodyEncodingForURI="true"后,可以解决普通get请求的中文乱码问题,但是对于通过ajax发起的get请求中文依然会乱码,请把useBodyEncodingForURI="true"改为URIEncoding="UTF-8"即可。
这些配置好了之后,你可能发现入库后表里的中文字段还是乱码(以mysql为例):
1、首先保证表本身的编码格式为UTF-8
如:CREATE TABLE `osf_photos` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`key` varchar(45) NOT NULL,
`album_id` int(11) NOT NULL,
`ts` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`desc` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
2、spring在配置数据库连接时,对jdbc.url的尾部添加useUnicode=true&characterEncoding=utf-8
如:jdbc.url=jdbc:mysql://localhost:3306/osf?useUnicode=true&characterEncoding=utf-8
转载于:https://my.oschina.net/zjg23/blog/760124
下一篇: 深入理解Spring MVC-处理器映射
推荐阅读
-
jsp中 ajax的get请求的中文乱码问题的解决方法
-
解决Python发送Http请求时,中文乱码的问题
-
SpringMVC中如何解决post和get请求的中文乱码问题
-
Web项目:解决SpringMVC中Post或者Get请求中文乱码的问题
-
SpringMVC中如何解决POST请求中文乱码问题GET的又如何处理
-
SpringMVC关于接收Form表单POST请求时,中文参数乱码的问题
-
基于url的get请求springmvc出现中文参数乱码
-
SpringMVC 解决GET请求时中文乱码的问题
-
用SpringMVC参数传递时,解决get请求时中文乱码的问题
-
SpringMVC中get请求中文乱码问题