javaWeb中的中文乱码问题

  乱码问题可以分为 response 乱码和 request 乱码。 request乱码问题包含(get请求乱码post请求乱码)。

  •   response 乱码问题解决
1 // setContentType() 需要在 getWriter() 方法之前设置
2 response.setContentType("text/html,charset=utf-8");// 设置浏览器响应头的Content-Type为text/html;charset=utf-8编码。
3 PrintWriter out = response.getWriter();
4 out.write("输出中文");
  •  request乱码(get请求乱码)
1 // form表单get提交方式提交类容都位于 url中
2 // tomcat 默认使用的是 ISO-8859-1 需要将tomcat的 conf下的server.xml 添加URIEncoding="UTF-8"如下。
3 <Connector port="8080" protocol="HTTP/1.1"
4                connectionTimeout="20000"
5                redirectPort="8443"  URIEncoding="UTF-8"/>
// 如果不修改只有极少数中文的话 可以使用
new String(request.getParameter("xxx").getBytes("ISO-8859-1"),"UTF-8") 解决乱码问题。
  •  request乱码(post请求乱码)
// post请求提交的内容位于request请求体而不是url所以和get请求处理方式不同
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
System.out.println(name);// 输出的是中文

  在javaWeb 项目中 post请求乱码通常使用过滤器来解决。spring提供了  org.springframework.web.filter.CharacterEncodingFilter 解决post提交乱码问题。 使用方式如下:

 1     <!-- 在web.xml文件中添加如下内容 --> 2     <filter>
 3         <filter-name>encodingFilter</filter-name>
 4         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
 5         <init-param>
 6             <param-name>encoding</param-name>
 7             <param-value>UTF-8</param-value>   <!-- 设置编码为请求编码为 UTF-8 -->
 8         </init-param>
 9         <init-param>
10             <param-name>forceEncoding</param-name>
11             <param-value>true</param-value>
12         </init-param>
13     </filter>
    <!-- 设置 filter-mapping -->
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

猜你喜欢

转载自www.cnblogs.com/dengsheng/p/11121686.html