yutons的gravatar头像
yutons2017-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头像

分享到:

最近浏览
782728819 LV1前天
星星
zyl LV337月2日
太阳太阳星星
itxichang6月14日
暂无贡献等级
wangjavayue LV85月31日
月亮月亮
tjthink LV85月17日
月亮月亮
zgjsyxwj LV65月2日
月亮星星星星
KerryWu4月20日
暂无贡献等级
pzhplus3月18日
暂无贡献等级
robert_20163月15日
暂无贡献等级
wgc_jy LV202月2日
太阳月亮
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友