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


打赏

分享到:

最近浏览
a31371049110月5日
暂无贡献等级
4608281739月19日
最代码贡献等级说明
liusi3319月13日
暂无贡献等级
2037785139月13日
暂无贡献等级
q28238659月6日
暂无贡献等级
junwuxie8月29日
最代码贡献等级说明
东北人8月18日
最代码贡献等级说明
javaLover8月16日
最代码贡献等级说明
dzx坏孩子8月10日
暂无贡献等级
wj32848月10日
最代码贡献等级说明
谎言丶8月10日
最代码贡献等级说明
BestClever8月9日
最代码贡献等级说明
cccczzzz8月7日
最代码贡献等级说明
继元宝8月7日
最代码贡献等级说明
kissuyoyo8月7日
最代码贡献等级说明
9090744898月7日
最代码贡献等级说明
flylnb8月5日
暂无贡献等级
lwf6268888月5日
最代码贡献等级说明
水心木支8月3日
最代码贡献等级说明
Ckxlnd8月1日
最代码贡献等级说明
最代码广告位
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友