get请求与post请求中文乱码问题的解决办法

首先出现中文乱码的缘由是tomcat默认的编码方式是"ISO-8859-1",这种编码方式以单个字节做为一个字符,而汉字是以两个字节表示一个字符的。前端

一,get请求参数中文乱码的解决办法

对于get请求解决中文乱码有两种途径java

一种是修改tomcat默认的编码方式为"UTF-8"web

在tomcat的server.xml里把spring

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>tomcat

修改成服务器

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

另外一种则是代码层次解决中文乱码,该方式须要前端与后台都要作相应编码post

来自页面的一个get请求:编码

window.location.href = getContextPath()+"/manage/user/detail?name="+encodeURI(encodeURI("小明"));url

服务器端:

String name = request.getParameter("name");
orgname = URLDecoder.decode(name,"UTF-8");

由于get请求的参数在请求行上,咱们不能像解决post请求那样使用 request.setCharacterEncoding("UTF-8");这种方式是修改方法体的编码方式

因此只能使用以上的方式分别对请求行的汉字进行编码和解码。其实解决get请求中文乱码问题最好的方式是避免使用中文,若带有中文参数尽可能使用post请求进行传递。

二,post请求参数中文乱码的解决办法

  对于post请求,请求中问乱码的两种解决办法,就喜闻乐见了。通常也不会有post请求参数中文乱码吧,任何一个java的web项目应该都配置了字符集过滤器。

  (1): request.setCharacterEncoding("UTF-8");

  (2):

     <filter>        <description>字符集过滤器</description>        <filter-name>encodingFilter</filter-name>        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>        <init-param>          <description>字符集编码</description>          <param-name>encoding</param-name>          <param-value>UTF-8</param-value>        </init-param>     </filter>     <filter-mapping>      <filter-name>encodingFilter</filter-name>      <url-pattern>/*</url-pattern>     </filter-mapping>

相关文章
相关标签/搜索