yutons的gravatar头像
yutons 2017-07-19 11:38:28
解决get,post请求中文乱码问题,以及maven使用tomcat:run中文乱码问题

本分享主要目的是解决请求的中文乱码问题

1、通用get请求乱码问题

针对Get方式的乱码问题,由于参数是通过URL传递的,所以上面通过request设置的编码格式是不起作用的,此时可以在每次发生请求之前对URL进行编码:例如:Location.href="/encodeURI"("http://localhost/test/s?name=中文&sex=女");

当然也有更简便的方法,那就是在服务器端配置URL编码格式:

修改tomcat的配置文件server.xml:
             <Connector URIEncoding="UTF-8" 
                 port="8080"   maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               connectionTimeout="20000" disableUploadTimeout="true" />

只需增加 URIEncoding="UTF-8"  这一句,然后重启tomcat即可。

 

2、通用post请求乱码问题

针对Post方式提交的请求如果出现乱码,可以每次在request解析数据时设置编码格式:

request.setCharacterEncoding("utf-8");

也可以使用编码过滤器来解决,最常用的方法是使用spring提供的编码过滤器:

在Web.xml中增加如下配置(要注意的是它的位置一定要是第一个执行的过滤器):

<filter>
<filter-name>charsetFilter</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> 

解决get,post请求中文乱码问题,以及maven使用tomcat:run中文乱码问题

该过滤器要做的其实就是强制为所有请求和响应设置编码格式:

request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");

3.Eclipse使用Maven tomcat:run命令启动web项目时修改uriEncoding编码

在eclipse开发调试时,get请求包含中文时会乱码,需要设置tomat的uriEncoding,我们知道外置的tomcat,修改tomcat下conf下的server.xml,那么maven内置的tomcat怎么设置呢?

测试于:Maven 3.0.5, eclipse-jee-indigo-SR2-win32

设置方法同设置端口方法,直接在上述文章中的Goals值中的tomcat:run前边加上-Dmaven.tomcat.uriEncoding=UTF-8即可,最终效果为:

-Dmaven.tomcat.uriEncoding=UTF-8 tomcat:run


打赏

已有1人打赏

inhv的gravatar头像
最近浏览
q6565677 2021年4月17日
暂无贡献等级
荒唐的羊  LV27 2021年3月29日
2252536772  LV21 2019年11月11日
kaifazhe 2019年2月20日
暂无贡献等级
Lemon Lee  LV1 2018年8月6日
782728819  LV1 2018年7月18日
zyl  LV34 2018年7月2日
itxichang  LV1 2018年6月14日
wangjavayue  LV12 2018年5月31日
tjthink  LV8 2018年5月17日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友