java web中乱码的种类和一些解决方式
在java web课堂测试中遇到了一些乱码问题 ,从百度上找到了许多种解决方法和乱码的种类,在这里总结一下。
一、文件出现乱码
【右击文件】->【Properties】->【Resource】->【Text file encoding】
一般jsp文件的编码是 UTF-8
即:<%@ page language="java" pageEncoding="utf-8"%>
二、浏览器和服务器间传输数据的乱码
1、 浏览器端编码,由服务器端告诉浏览器如何解码数据:
response.setContentType("text/html; charset=UTF-8");或response.setCharacterEncoding("UTF-8");
这里是重新定向一下编码的类型
2、浏览器和服务器间传输数据时的乱码
服务器端编码,将客户端文本框传递的数据进行解码:默认使用ISO-8859-1进行编码数据,
然后将数据传输到服务器,需要将浏览器传递过来的类型进行转换为我们需要的类型
方法一:
String username = request.getParameter("username");
username = new String(username.getBytes("ISO-8859-1"), "UTF-8");
方法二:
// 必须在获取参数之前,调用如下方法先解码 request.setCharacterEncoding("UTF-8"); String username = request.getParameter("username");
比较通用方案:在一个Filter中更改所有的编码方式:
在src中添加filter来设置编码格式是中文,添加一个filter类
然后在web.xml中配置filter类
filter类
public class CharFilter implements Filter{
String encoding = null;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
encoding = filterConfig.getInitParameter("encoding");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// request.setCharacterEncoding("utf-8");
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
web.xml
<filter> <filter-name>CharFilter</filter-name> <filter-class>CharFilter所在包的地址</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter>
这是我在这次测试中遇到的问题与总结。
部分内容摘自百度。
转载请注明出处。。
浙公网安备 33010602011771号