解决post和get请求的乱码问题

1.解决post中文乱码问题

添加一个spring提供的过滤器 , 将编码设置为utf-8
在web.xml中加入以下配置信息:

<filter>
	<filter-name>encoding</filter-name>
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	<!-- 设置编码参是UTF8 -->
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>encoding</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

配置好以后就可以解决post请求时出现的乱码问题

2.解决get请求中文参数乱码

  1. 第一种解决办法直接修改编码方式:
    以tomcat为例子: 修改tomcat配置文件server.xml (就是修改端口的位置)
    添加前如下:
    <Connector
    		port="8080" 
    		protocol="HTTP/1.1"
    		connectionTimeout="20000"
    		redirectPort="8443" />

添加编码信息后如下:

    <Connector
    		URIEncoding="utf-8"
    		port="8080" 
    		protocol="HTTP/1.1"
    		connectionTimeout="20000"
    		redirectPort="8443" />

就是多加了一个编码的配置:URIEncoding="utf-8"

  1. 第二种,先解码再编码
    这种方式对服务器来说并没有改变编码的方式. 比如前台传递过来的是iso-8859(不支持中文)编码, 这里我们或取得仍然是iso-8859的编码. (第一种方式获取的直接就是utf-8编码)
    原理过程:
    1). 解码
    具体做法就是我们先用iso-8859来对参数信息进行解码, 解码其实也就是把iso-8859的编码还原成之前的原始的二进制字节码
    2).编码
    通过上步得到的二进制的字节码我们可以将他使用任何一种方式进行重新编码, 例如我们需要utf-8 的格式, 这时候再讲二进制码按utf8的编码格式进行转换一下即可.
    以get请求参数userName为例:
String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

以上就是将userName以iso解码,然后再以utf8编码.

猜你喜欢

转载自blog.csdn.net/fanbaodan/article/details/85215177