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>
欺骗自己最简单,欺骗自己最困难。
安慰自己最简单,安慰自己最困难。