jsp和servlet中出现中文乱码的情况很多,而且针对每种情况的解决方案都不太相同,现在我先简单的介绍一下出现乱码的各种情况以及相应的解决方案.
1.页面中的中文乱码.
例如:
PrintWriter out = response.getWriter();
out.println("你好");
在servlet中如果不加任何处理,这样做会出现乱码,解决方法就是在定义out对象之前插入这句代码:
response.setCharacterEncoding("utf-8");这里的字符编码可以根据你的项目使用的字符编码自行决定.
2.post表单提交传值乱码.
例如:
String value=request.getParameter("name");
out.println(value);
如果在页面中显示的中文是通过post方式提交过来的,需要在调用getParameter方法之前,插入这句代码防止乱码
3.get表单提交传值乱码.
由于get提交的信息是直接显示在浏览器地址栏中的,而浏览器地址栏默认的编码方式为ISO-8859-1,所以处理get方式的乱码需要将通过get方式获得的中文进行字符转码
在这给出方法:
String value=request.getParameter("name");
value=new String(value.getBytes("ISO-8859-1"),"UTF-8");//通过这行代码将value的字符编码转换为UTF-8
如果你想知道如何使用过滤器处理乱码,请访问我的另一篇文章使用fiter(过滤器)处理JSP和servlet的中文乱码