Spring Tomcat Post Get 请求参数有中文时出现乱码或+号变空格等关于编码的问题
2017-09-22 18:40
1181 查看
今天做Post,get请求的测试,出现了如题的错误,记录一下,能力有限如有错误的请大家指正,谢谢!
系统环境:服务器:Contos7,tomcat7,spring4.3.8,maven IDE:intellijj idea 2017.1.2
客户机:win7,android studio2.31
操作:客户机在android里面用HttpURLConection发送请求,与编码有关的东西测试如下:
在服务器端的tomcat目录下,conf下server.xml修改<Connector ... URIEncoding="UTF-8">这个参数是设置,
1、get请求时,所接收到的客户机发过来的参数是什么编码格式。如果客户机get时的参数有中文就是用,
URLEncode.encode("中文参数",“utf-8”),将参数转成UTF-8格式的,然后服务器Tomcat就要设置URIEncoding="UTF-8"这个参数。
这个是GET请求的,相对来说比较简单。
2、Post请求时,有关参数与Get的设置是不一样的注意了。
首先,如果客户端Post中文参数时可以直接Post中文过去,可以不用转编码,但如果参数中有+号或&号,这两个符号要用在你Post
参数到服务器之前要把这两个字符用下面的方法要替换
param=param.replace("+","%2B");
param=param.replace("&","%26");
这样,要不然服务器接到到这两个字符会直接替换成空格。具体原因不知,找了很多地方没解决,所以直接用replace来替换,特别注意一下。
我一直很奇怪不知是哪个地方设置的,可以直接Post中文过去而不用转码,因为系统会自动帮你转码。(一直没找到在哪里设置的,如果有大神知道,教下小弟)
post请求的返回值如果是中文的话,可以在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>
客户端接到到服务器的返回数据,再UFT-8回来就是你要想要的结果了。
另外,如果你的返回值是实体类或者List,MAP等类型的话,要可以在 Spring里添加一个转换器,它会自动将这些类型,转成Json字符。
转换器:
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<!-- 配置Fastjson支持 -->
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
我用的是阿里的Json工具,你也可以配成别的。
相关文章推荐
- POST、GET请求中文参数乱码问题
- 后台接收get请求参数出现中文乱码问题
- tomcat编码格式的设置/如何解决get()方式提交中文参数乱码的问题
- JavaWeb之不同Tomcat版本对get、post请求,中文乱码问题
- 修改Tomcat默认编码消除get方式传递参数出现中文乱码
- post和get请求中文参数出现乱码现象解决方案
- 修改Tomcat默认编码消除get方式传递参数出现中文乱码
- GET方法和POST获取中文参数出现乱码的问题及解决方法
- 关于Get,Post请求中文乱码问题有效解决方法
- get请求时候参数中含有“中文”字段出现乱码问题的原因和解决方法
- JSP页面post和get方式提交请求,请求参数出现中文乱码
- SpringMVC JQuery Ajax Get Post请求在Tomcat中乱码解决方案
- 关于struts2.1.6前台传递中文参数到后台action出现乱码问题的解决办法
- 关于使用showModalDialog传递参数出现中文乱码问题
- Tomcat在处理GET和POST请求时产生的乱码问题
- tomcat_get方式传递中文参数乱码问题
- jquery.get的参数中文自动编码与header(\'Content-type: text/html; charset=gbk\');乱码问题
- Tomcat在处理GET和POST请求时产生的乱码问题
- Tomcat在处理GET和POST请求时产生的乱码问题
- Tomcat在处理GET和POST请求时产生的乱码问题